1

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.

chue x
  • 18,573
  • 7
  • 56
  • 70
StillBuggin
  • 280
  • 1
  • 3
  • 14

0 Answers0