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

ͨ¹ýÁ½¸öÀý×Ó½²½âPIVOT/UNPIVOTµÄÓ÷¨_SQL¼¼ÇÉ

ʹÓùýSQL Server 2000µÄÈ˶¼ÖªµÀ£¬ÒªÏëʵÏÖÐÐÁÐת»»,±ØÐë×ÛºÏÀûÓþۺϺ¯ÊýºÍ¶¯Ì¬SQL£¬¾ßÌåʵÏÖÆðÀ´ÐèÒªÒ»¶¨µÄ¼¼ÇÉ£¬¶øÔÚSQL Server 2005ÖУ¬Ê¹ÓÃÐÂÒý½øµÄ¹Ø¼ü×ÖPIVOT/UNPIVOT£¬Ôò¿ÉÒÔºÜÈÝÒ×µÄʵÏÖÐÐÁÐת»»µÄÐèÇó¡£
ÔÚ±¾ÎÄÖÐÎÒÃǽ«Í¨¹ýÁ½¸ö¼òµ¥µÄÀý×ÓÏêϸ½²½âPIVOT/UNPIVOTµÄÓ÷¨¡£
PIVOTµÄÓ÷¨£º
Ê×ÏÈ´´½¨²âÊÔ±í£¬È»ºó²åÈë²âÊÔÊý¾Ý
 
create table test(id int,name varchar(20),quarter int,profile int)
insert into test values(1,'a',1,1000)
insert into test values(1,'a',2,2000)
insert into test values(1,'a',3,4000)
insert into test values(1,'a',4,5000)
insert into test values(2,'b',1,3000)
insert into test values(2,'b',2,3500)
insert into test values(2,'b',3,4200)
insert into test values(2,'b',4,5500)
select * from test
id name quarter profile
----------- -------------- ----------- -----------
1 a 1 1000
1 a 2 2000
1 a 3 4000
1 a 4 5000
2 b 1 3000
2 b 2 3500
2 b 3 4200
2 b 4 5500
(8 row(s) affected)
ʹÓÃPIVOT½«Ëĸö¼¾¶ÈµÄÀûÈóת»»³ÉºáÏòÏÔʾ:
select id,name,
[1] as "Ò»¼¾¶È",
[2] as "¶þ¼¾¶È",
[3] as "Èý¼¾¶È",
[4] as "Ëļ¾¶È"
from
test
pivot
(
sum(profile)
for quarter in
([1],[2],[3],[4])
)
as pvt
id name Ò»¼¾¶È ¶þ¼¾¶È Èý¼¾¶È Ëļ¾¶È
-------- --------- ----------- -------- ------- -------
1 a 1000 2000 4000 5000
2 b 3000 3500 4200 5500
(2 row(s) affected)
 
 
 
 
 
UNPIVOTµÄÓ÷¨£º
 
 
Ê×ÏȽ¨Á¢²âÊÔ±í£¬È»ºó²åÈë²âÊÔÊý¾Ý
drop table test
create table test(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int)
insert into test values(1,'a',1000,2000,4000,5000)
insert into test values(2,'b',3000,3500,4200,5500)
select * from test
id name Q1 Q2 Q3 Q4
-------- ------- --------- --------- -------- --------
1 a 1000 2000 4000 5000
2 b 3000 3500 4200 5500
(2 row(s) affected)
ʹÓÃUNPIVOT£¬½«Í¬Ò»ÐÐÖÐËĸö¼¾¶ÈµÄÁÐÊý¾Ýת»»³ÉËÄÐÐÊý¾Ý£º
select id,name,quarter,profile
from
test
unpivot
(
profile
for quarter in
([Q1],[Q2],[Q3],[Q4])
)
as unpvt
id name quarter profile
----------- ----------- ----


Ïà¹ØÎĵµ£º

sql ´´½¨×÷Òµ ÈÕÆÚת»» Ô¼Êø Óαê

´´½¨×÷Òµ£º
DECLARE @jobid uniqueidentifier, @jobname sysname
SET @jobname = N'×÷ÒµÃû³Æ'
IF EXISTS(SELECT * from msdb.dbo.sysjobs WHERE name=@jobname)
EXEC msdb.dbo.sp_delete_job @job_name=@jobname
EXEC msdb.dbo.sp_add_job
@job_name = @jobname,
@job_id = @jobid OUTPUT
--¶¨Òå×÷Òµ²½Öè
DECLARE ......

ÔÚCMDϲÙ×÷SQL SERVERÊý¾Ý¿â


MYSQL¿ÉÒÔÔÚ¿ØÖÆÌ¨Ï½øÐвÙ×÷£¬ÀûÓÃÃüÁî
SQL´úÂë
mysql -h localhost -u root -p123456  
¾Í¿ÉÒԵǽMYSQLµÄ¿ØÖÆÌ¨¡£
sql serverÒ²ÌṩÁË¿ØÖÆÌ¨ÏµIJÙ×÷¹¦ÄÜ¡£
ÔÚSQL SERVERµÄ binnĿ¼Ï£¬ÌṩÁËosql.exeÓëisql.exeÕâÁ½¸öÎļþ¡£
ÕâÁ½¸ö³ÌÐò¶¼ÌṩÁË·ÃÎÊSQL SERVERµÄ¹¦ÄÜ£¬ÕâÁ ......

SQL×Ö·û´®´¦Àíº¯Êý»ã×Ü

Ò»¡¢×Ö·ûת»»º¯Êý
1¡¢ASCII()
·µ»Ø×Ö·û±í´ïʽ×î×ó¶Ë×Ö·ûµÄASCII ÂëÖµ¡£ÔÚASCII£¨£©º¯ÊýÖУ¬´¿Êý×ÖµÄ×Ö·û´®¿É²»ÓÑ’À¨ÆðÀ´£¬µ«º¬ÆäËü×Ö·ûµÄ×Ö·û´®±ØÐëÓÑ’À¨ÆðÀ´Ê¹Ó㬷ñÔò»á³ö´í¡£
2¡¢CHAR()
½«ASCII Âëת»»Îª×Ö·û¡£Èç¹ûûÓÐÊäÈë0 ~ 255 Ö®¼äµÄASCII ÂëÖµ£¬CHAR£¨£© ·µ»ØNULL ¡£
3¡¢LOWE ......

ͨ¹ý·ÖÎöSQLÓï¾äµÄÖ´Ðмƻ®ÓÅ»¯SQL

ͨ¹ý·ÖÎöSQLÓï¾äµÄÖ´Ðмƻ®ÓÅ»¯SQL(×ܽá)
×ö DBA¿ì7ÄêÁË£¬Öмä¸ÐÎòºÜ¶à¡£ÔÚDBAµÄÈÕ³£¹¤×÷ÖУ¬µ÷Õû¸ö±ðÐÔÄܽϲîµÄSQLÓï¾äʱһÏÓÐÌôÕ½ÐԵŤ×÷¡£ÆäÖеĹؼüÔÚÓÚÈçºÎµÃµ½SQLÓï¾äµÄÖ´Ðмƻ®ºÍÈçºÎ´ÓSQLÓï¾äµÄÖ´Ðмƻ®Öз¢ÏÖÎÊÌâ¡£×ÜÊÇÏ뽫ÈÕ³£¾­ÑéµÄµãµãµÎµÎ×ܽáһϣ¬µ«ÊÇÖ±µ½×î½ü²Å϶¨¾öÐÄ£¬×ܹ²»¨ÁË3¸öÖÜĩʱ¼ä£¬²Å½«Æä ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ