[SQL ] pivot欄位自動產生
資料庫名稱: MSSQL
資料庫版本: 2008R2
內容/問題描述:
我想要寫一個報表固定最近5年客戶的總業績
因為每年會變動,我不想寫[2015],[2016],[2017],[2018],[2019]
以下 PIVOT 年度那邊一直出現錯誤,麻煩協助看一下錯在哪
declare @y4 varchar(4),@YearGroup varchar(100)
set @y4 = cast(year(getdate())-4 as varchar(4))
select @YearGroup = COALESCE(@YearGroup+',','')+QUOTENAME(年度)
FROM 客戶業績 Where 年度 >= @y4
group by QUOTENAME(年度)
order by QUOTENAME(年度)
declare @SQL nvarchar(max)
SET @SQL = N'SELECT *
FROM (SELECT [年度], [客戶編號], [簡稱], [總金額]
FROM 客戶業績
WHERE 年度 >= cast(year(getdate()) - 4 AS varchar)) T
PIVOT (SUM(總金額) FOR 年度 IN (' + @YearGroup + ') ) as P'
EXEC @SQL
執行錯誤是
名稱 'SELECT *
FROM (SELECT [年度], [客戶編號], [簡稱], [總金額]
FROM 客戶業績
WHERE 年度 >= cast(year(getdate()) - 4 AS varchar)) T
PIVOT (SUM(總金額) FOR 年度 IN ([2015],[2016],[2017],[2018],[2019]) )
as P' 不是有效的識別碼。
可是把錯誤那一段直接執行是OK的
麻煩協助看下哪邊有錯
PS: 試過 (' + @YearGroup + N') 一樣不行
如果不使用 EXEC @SQL
會顯示
""' + @YearGroup + ' " 附近的語法不正確,必須是'.',ID,或QUOTE_ID.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.65.181
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1556504897.A.264.html
※ 編輯: tsongs (125.227.65.181), 04/29/2019 11:05:51
→
04/29 22:33,
5年前
, 1F
04/29 22:33, 1F
推
05/01 10:17,
5年前
, 2F
05/01 10:17, 2F
感謝2位
我在很多地方放 N' 一直沒解決
終於用funk6478的方法解決了
※ 編輯: tsongs (125.227.65.181), 05/03/2019 08:43:06
Database 近期熱門文章
PTT數位生活區 即時熱門文章