PIVOT ʹÓÃ:
1: ÒªÇó·Ç動態
2: ÒªÇó for in ×Ӿ䲻ÄÜ寫ËÀ
ÎÒ×Ô¼º寫ÈçÏÂ,µ«ÊÇ語·¨²»Í¨過
CREATE TABLE PivotTest(SNC varchar(10),Amt decimal(18,4))
insert into PivotTest(SNC,Amt) VALUES('a',1)
insert into PivotTest(SNC,Amt) VALUES('a',2)
insert into PivotTest(SNC,Amt) VALUES('b',4)
insert into PivotTest(SNC,Amt) VALUES('c',10)
insert into PivotTest(SNC,Amt) VALUES('c',1000)
select *
from (select SNC,Amt from PivotTest) A
pivot
(
sum(Amt)
for SNC IN(stuff((select distinct ',' + quotename(rtrim(SNC)) as [text()] from PivotTest for xml path('')),1,1,''))
) as pvt
²»ÄÜ處ÀíºÃ for in×Ó¾ä
¸÷λÓÐʲôºÃ½¨議嗎?
²»ÄÜÓö¯Ì¬¡¡£¿
ÊǵÄ,(Òò為ÎÒ×Ô¼º認為動態Ïà對來說難讀).當È»,Èç¹û²»會µÄ話,Ö»ÄÜʹÓÃ動態ÁË.
ÈçÒª動態,ÄDZÈ較簡單,±ÈÈç.
declare @col nvarchar(max)
declare @sql nvarchar(max)
select @col = stuff((select distinct ',' + quotename(rtrim(SNC)) as [text()] from PivotTest for xml path('')),1,1,'')
exec ('select *
from (select SNC,Amt from PivotTest) A
pivot
(
sum(Amt)
for SNC IN(' + @col + ')' + ') as pvt')
×¢:PIVOT³õʹÓÃ,²»Á˽â.
ÒªÊղأ¬±ØÐëµÄ£¡£¡
ÒªÊղأ¬±ØÐë
ÎÒÓжà¸ö±íA B C ½á¹¹ÊÇÒ»ÑùµÄ£¬¶¼ÓÐ2¸ö×Ö¶ÎnameºÍcontent,ÎÒÒªËÑË÷ËùÒÔ±íËùÓÐ×Ö¶ÎÖаüº¬¡°Öйú¡±µÄÄÚÈÝ Õâ¸öSQLÓï¾äÔõôд
ÈçºÎ½«¶à¸ö±íµÄ²éѯ½á¹ûÁ¬³ÉÒ»¸ö±í Õâ¸öSQLÓï¾äÔõôд ±íµÄ½á¹¹ÊÇÒ»ÑùµÄ
ÀýÈç£ ......
СµÜ£¬×î½üҪתÐÐÈ¥×öoracle¿ª·¢ÁË£¬ÓÉÓÚ´óѧ±Ïҵʱ£¬×ßÁ˸öÍä·£¬ÏÖÔÚºÜСÐÄ£¬ÎÊÏ£¬×öPL/SQLÓÐûÓÐǰ;£¿£¿£¿
µ±È»ÎÒ˵µÄÕâ¸öǰ;ÊÇÖ¸ ÒÔºóÒªÌø²Û£¬Êг¡¶ÔÕâÑùµÄÈ˲ŵÄÐèÇóÁ¿´ó²»´ó£¿£¿
3q ÄÇ¿´À´»¹Ö»ÄÜÏȽӴ ......