Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö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Óï¾ä¡£ - Oracle / ¿ª·¢

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

Ò»¸öpl/sqlÎÊÌâ - Oracle / ¿ª·¢

ÎÒÊÇÔÚtoadÖÐÊäÈë϶Îsql
  declare
  TYPE test_rec IS record(
  code varchar(10),
  name varchar(30)
  );
  v_book test_rec;
    ......

ÇëÎÊASPÈçºÎÁ¬½Ó¶à¸öSQL SERVER£¿ - Web ¿ª·¢ / ASP

ÓÐÁ½¸ö»òÒÔÉϵÄÔ¶³ÌÊý¾Ý¿â£¬ÈçºÎÓÃASP¼ì²âÁ¬½ÓËٶȲ¢Á¬½Ó×î¿ìµÄMSSQLÊý¾Ý¿â£¿

ÓÐÕâÑùµÄASPº¯ÊýÂð£¿ÎÒGOOGLEÁËһϣ¬ÕÒ²»µ½¡£

PHP+MYSQLÏÂÓÐÕâÖÖÀý×Ó£º
PHP code:

Example:
$wgDBservers = array(
......

ÇóÒ»SQL - MS-SQL Server / »ù´¡Àà

tab1 ×Ö¶Î:billdate,goodsid,incount,inmoney,outcount,outmoney,endprice,endcount,endamt
tab2 ×Ö¶Î:goodsid,goodskind£¨ÉÌÆ·ÀàÐÍ£©
tab3 ×Ö¶Î:goodskind£¨ÉÌÆ·ÀàÐÍ£©,kindname
½á¹û£º
µÃµ½ÉÌÆ·ÀàÐÍÔÚÒ»¶Îʱ¼ä ......

Á½¾äSQL²¢Ò»¾ä,ÓÐÎÊÌâ. - MS-SQL Server / »ù´¡Àà

µÚÒ»¾ä:
select ht.gfdm,gfdm.gfmc,gfdm.lb ,sum(jh.htdj*jh.htsl)as je
from ht left join gfdm on ht.gfdm=gfdm.gfdm 
 join jh on ht.htbh=jh.hth 
and ht.htbh not like'del%' and ht. ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ