看板 Database 關於我們 聯絡資訊
資料庫名稱: 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
funk6478: 最後一句改成 EXEC sp_executesql @SQL 05/01 10:17
感謝2位 我在很多地方放 N' 一直沒解決 終於用funk6478的方法解決了 ※ 編輯: tsongs (125.227.65.181), 05/03/2019 08:43:06