在其他SELECT中使用SELECT结果作为COLUMN名称

时间:2014-11-26 14:48:49

标签: sql sql-server sql-server-2012

是否可以使用select的结果作为字符串与其他select中的列名中的另一个字符串连接?

示例:

SELECT brand 
FROM articles a 
WHERE a.id='12345678'

结果:BRAND_A

我现在想要将_PRICE连接到BRAND_A ...

SELECT (
        SELECT brand
        FROM articles a
        WHERE a.id = '12345678'
        ) + "_PRICE"
FROM prices p
WHERE p.id = '12345678'

...实际检索:

SELECT BRAND_A_PRICE
FROM prices p
WHERE p.id = '12345678'

2 个答案:

答案 0 :(得分:9)

您不需要动态SQL来执行此操作(如果可能的话,应该避免使用动态SQL)。相反,您可以使用CASE语句。您可以使用一个语句执行此操作,但我将其拆分出来用于显示目的:

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'

答案 1 :(得分:6)

我认为你需要一个Dynamic SQL query

首先将特定Brand的{​​{1}}存储在变量中,然后使用ID中附加Dynamic Query的变量来获取结果

_PRICE