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³õʹÓÃ,²»Á˽â.
ÒªÊղأ¬±ØÐëµÄ£¡£¡
ÒªÊղأ¬±ØÐë
Ïà¹ØÎÊ´ð£º
ÎÒÓÐÒ»¸ö±í£¬½á¹¹ÊÇÕâÑù¡£
ת³ö µ¥Î» תÈ뵥λ ±ÊÊý ½ð¶î
date(Ö÷) outid(Ö÷) inid(Ö÷) num amt
2009 1 2 1 500 Ϊ 1 µ¥Î» ÔÚ2009Ä ......
ÎÒÊÇÔÚtoadÖÐÊäÈë϶Îsql
declare
TYPE test_rec IS record(
code varchar(10),
name varchar(30)
);
v_book test_rec;
......
ÓÐÁ½¸ö»òÒÔÉϵÄÔ¶³ÌÊý¾Ý¿â£¬ÈçºÎÓÃASP¼ì²âÁ¬½ÓËٶȲ¢Á¬½Ó×î¿ìµÄMSSQLÊý¾Ý¿â£¿
ÓÐÕâÑùµÄASPº¯ÊýÂð£¿ÎÒGOOGLEÁËһϣ¬ÕÒ²»µ½¡£
PHP+MYSQLÏÂÓÐÕâÖÖÀý×Ó£º
PHP code:
Example:
$wgDBservers = array(
......
tab1 ×Ö¶Î:billdate,goodsid,incount,inmoney,outcount,outmoney,endprice,endcount,endamt
tab2 ×Ö¶Î:goodsid,goodskind£¨ÉÌÆ·ÀàÐÍ£©
tab3 ×Ö¶Î:goodskind£¨ÉÌÆ·ÀàÐÍ£©,kindname
½á¹û£º
µÃµ½ÉÌÆ·ÀàÐÍÔÚÒ»¶Îʱ¼ä ......
µÚÒ»¾ä:
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. ......