SQL Server 2008 R2:使用列值连接别名

时间:2017-08-16 06:39:27

标签: sql-server tsql sql-server-2008-r2

我的Product表包含QtyIDQtyYear_ID列。我还有tbl_Years IDYear的表{。}}。

我有一个简单的SELECT语句,SUM计算Qty

SELECT 
    SUM(Qty) AS /*Sum_of_year_2016*/
FROM 
    Product p
INNER JOIN 
    tbl_Years ty ON p.Year_ID = ty.Year_ID
WHERE
    ty.Year_ID = 6;

我想为Sum_of_year_2016值定义SUM(Qty)的别名。

注意:应该从tbl_Years表中提取年份。

我的尝试:

SELECT 
    SUM(Qty) AS 'Sum_of_year_' + ty.Year
FROM 
    Product p
INNER JOIN  
    tbl_Years ty ON p.Year_ID = ty.Year_ID
WHERE 
    ty.Year_ID = 6;

但是我收到了一个错误:

  

语法错误; '+'附近的语法不正确。

1 个答案:

答案 0 :(得分:4)

您需要使用动态SQL来获取自定义别名:

DECLARE @year NVARCHAR(4) = (SELECT TOP 1 Year FROM  tbl_Years WHERE Year_id=6);

DECLARE @sql NVARCHAR(MAX) = 
'SELECT 
    SUM(Qty) AS ' + QUOTENAME('Sum_of_year_' + @year) +
' FROM Product p
INNER JOIN tbl_Years ty 
ON p.Year_ID = ty.Year_ID
Where ty.Year_ID = 6;';

EXEC sp_executesql @sql;