Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Usa il risultato SELECT come nome COLUMN in un altro SELECT

Non è necessario l'SQL dinamico per farlo (e l'SQL dinamico dovrebbe essere evitato se possibile). Invece puoi usare un'istruzione CASE. Puoi farlo con una singola istruzione, ma l'ho divisa per scopi di visualizzazione:

DECLARE @brand VARCHAR(100) = (SELECT brand FROM articles a WHERE a.id='12345678')

SELECT CASE @brand
           WHEN 'BRAND_A' THEN BRAND_A_PRICE
           WHEN 'BRAND_B' THEN BRAND_B_PRICE
           WHEN 'BRAND_C' THEN BRAND_C_PRICE
           ELSE 0 END AS PRICE
FROM prices
WHERE id='12345678'