我有桌子
像
ID, ID_CLIENT, ID_TYPE, PRICE
我如何创建一个新的“CTE”表,其中我有1个记录foreach ID_Client。 对于某些(5)ID_TYPE是priceType列。
像
ID_CLIENT, PRICEFORID_TYPE1, PRICEFORIDTYPE_2,.......
1 10 15
2 20 30
我的第一次尝试是使用PIVOT表,但随后发布1我无法过滤ID_TYPE。
答案 0 :(得分:1)
假设你需要DYNAMIC
示例强>
Declare @SQL varchar(max) = '
Select *
From (
Select [ID_CLIENT]
,[Item] = concat(''PRICEFORID_TYPE'',[ID_TYPE])
,[Price]
From YourTable
) A
Pivot (max([Price]) For [Item] in (' + Stuff((Select Distinct ','+QuoteName(concat('PRICEFORID_TYPE',[ID_TYPE]))
From YourTable
Order By 1
For XML Path('')),1,1,'') + ') ) p'
Exec(@SQL);
--Print @SQL
<强>返回强>
生成的SQL看起来像这样
Select *
From (
Select [ID_CLIENT]
,[Item] = concat('PRICEFORID_TYPE',[ID_TYPE])
,[Price]
From YourTable
) A
Pivot (max([Price]) For [Item] in ([PRICEFORID_TYPE1],[PRICEFORID_TYPE2]) ) p