Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

SQL PIVOT 簡單問題

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³õʹÓÃ,²»Á˽â.


ÒªÊղأ¬±ØÐëµÄ£¡£¡
ÒªÊղأ¬±ØÐë


Ïà¹ØÎÊ´ð£º

sqlÓï¾ä¶à±í¶à×ֶβéѯ - MS-SQL Server / »ù´¡Àà

ÎÒÓжà¸ö±íA B C ½á¹¹ÊÇÒ»ÑùµÄ£¬¶¼ÓÐ2¸ö×Ö¶ÎnameºÍcontent,ÎÒÒªËÑË÷ËùÒÔ±íËùÓÐ×Ö¶ÎÖаüº¬¡°Öйú¡±µÄÄÚÈÝ Õâ¸öSQLÓï¾äÔõôд 

ÈçºÎ½«¶à¸ö±íµÄ²éѯ½á¹ûÁ¬³ÉÒ»¸ö±í Õâ¸öSQLÓï¾äÔõôд ±íµÄ½á¹¹ÊÇÒ»ÑùµÄ
ÀýÈç£ ......

Çë½ÌsqlÓï¾ä¡£ - Oracle / ¿ª·¢

ÎÒÓÐÒ»¸ö±í£¬½á¹¹ÊÇÕâÑù¡£
  ת³ö µ¥Î» תÈ뵥λ ±ÊÊý ½ð¶î
date(Ö÷) outid(Ö÷) inid(Ö÷) num amt
2009 1 2 1 500 Ϊ 1 µ¥Î» ÔÚ2009Ä ......

SQLÈçºÎÓÅ»¯ÎÊÌâ - MS-SQL Server / ÒÉÄÑÎÊÌâ

½ñÌì×öÁËÒ»¸ö´æ´¢¹ý³Ì   »·¾³ÊÇSQL2000Êý¾Ý¿â  
´óÖÂÈçÏÂ
½¨Á¢ÁÙʱ±í
¶¨ÒåÔ±¹¤Óαê
        Ñ­»·Ô±¹¤£¨ÊôÓÚ1¸ö¹«Ë¾)  
        ......

pl/sql - Oracle / ¿ª·¢

СµÜ£¬×î½üҪתÐÐÈ¥×öoracle¿ª·¢ÁË£¬ÓÉÓÚ´óѧ±Ïҵʱ£¬×ßÁ˸öÍä·£¬ÏÖÔÚºÜСÐÄ£¬ÎÊÏ£¬×öPL/SQLÓÐûÓÐǰ;£¿£¿£¿
µ±È»ÎÒ˵µÄÕâ¸öǰ;ÊÇÖ¸ ÒÔºóÒªÌø²Û£¬Êг¡¶ÔÕâÑùµÄÈ˲ŵÄÐèÇóÁ¿´ó²»´ó£¿£¿

3q ÄÇ¿´À´»¹Ö»ÄÜÏȽӴ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ