我的Product
表包含QtyID
,Qty
和Year_ID
列。我还有tbl_Years
ID
和Year
的表{。}}。
我有一个简单的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;
但是我收到了一个错误:
语法错误; '+'附近的语法不正确。
答案 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;