大家好,
<圖一>查詢條件是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