大家好,
<圖一>查詢條件是YEARS,查詢結果如<圖一>,
SQL指令怎麼寫才能將<圖一>查詢條件(YEARS)變成欄位名稱如<圖二>的黃色底欄位呢?
備註:查詢條件不是固定值,依USER查詢有不同的年度
<圖一>
<圖二>
參考~
create table TmpTable(
Years int
,List nvarchar(50)
,Cost nvarchar(50)
)
insert into TmpTable
values('112','書包','9.4%')
,('112','筆','12.1%')
,('112','尺','40.3%')
,('113','書包','9.1%')
,('113','筆','12.6%')
,('113','尺','40.4%')
declare @MaxStr nvarchar(max)
select @MaxStr=stuff((
select ',[' + Convert(varchar,Years) + ']'
from TmpTable
group by Years
for xml path('')
),1,1,'')
declare @Sql nvarchar(max) = N'
select *
from TmpTable
pivot(
max(Cost)for Years in(' + @MaxStr + ')
) pt
'
exec sp_executesql @Sql
drop table TmpTable
查詢條件不是固定值,無法用 PIVOT in 固定值 .....
太奇怪了
https://dbfiddle.uk/PJ1GNoUG
先在 TmpTableX 處理要篩選的條件即可
rogeryao
我是認為版主要這段可以隨意下條件要顯示的欄位~
不用二次下SQL
也就是不可以再用 exec sp_executesql @Sql 這句^^a
例如這樣~
pivot(
max(Cost)for Years in(
select Years
from table
where Years in(112,113)
)
) pt