I have this piece of SQL code that I want to make dynamic:
SELECT
state as 'hc-a2',
COUNT(*) AS 'total',
COUNT(CASE WHEN nature = 'nature_1' THEN nature END) AS 'nature_1',
COUNT(CASE WHEN nature = 'nature_2' THEN nature END) AS 'nature_2',
COUNT(CASE WHEN nature = 'nature_3' THEN nature END) AS 'nature_3'
FROM [MY_DATA_BASE].[DBO].[MY_TABLE]
GROUP BY state
ORDER BY state
Because I can't enumerate all the natures in the database I can't keep running a query like this.
I need to make this CASE statement
dynamic, this part specifically:
COUNT(CASE WHEN nature = 'nature_1' THEN nature END) AS 'nature_1',
COUNT(CASE WHEN nature = 'nature_2' THEN nature END) AS 'nature_2',
COUNT(CASE WHEN nature = 'nature_3' THEN nature END) AS 'nature_3'
I'm simply stuck because I don't know if it's possible.
Hope someone can enlighten my path on this.