2017-08-16 111 views
2

我有Product表,其中列QtyID,QtyYear_ID。我也有tbl_YearsIDYearSQL Server 2008 R2:使用列值連接別名名稱

我有一個簡單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(Qty)值定義Sum_of_year_2016別名。

注意:應該從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; 

但我發現了一個錯誤:

Syntax error; incorrect syntax near '+'.

+0

https://開頭www.sqlservercentral.com/Forums/Topic1613968-392-1.aspx –

回答

3

你需要使用動態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;