Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden Sie das SELECT-Ergebnis als Spaltennamen in einem anderen SELECT

Dazu benötigen Sie kein dynamisches SQL (und dynamisches SQL sollte nach Möglichkeit vermieden werden). Stattdessen können Sie eine CASE-Anweisung verwenden. Sie können dies mit einer einzigen Anweisung tun, aber ich habe sie zu Anzeigezwecken aufgeteilt:

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'