日期:2014-05-18  浏览次数:20543 次

求交叉表语句
求交叉表语句

我用SQL SERVER 2000

我有一表FGSSB :
XRQ RGL JCMC
2012-04-01 26896 二分公司
2012-04-01 22330 三分公司
2012-04-01 25919 四分公司
2012-04-02 26913 二分公司
2012-04-02 22267 三分公司
2012-04-02 25355 四分公司
2012-04-03 26527 二分公司
2012-04-03 22442 三分公司
2012-04-03 25934 四分公司
2012-04-04 27043 二分公司
2012-04-04 22678 三分公司
2012-04-04 25918 四分公司
2012-04-05 26764 二分公司
2012-04-05 23056 三分公司
2012-04-05 26858 四分公司

转换并添加至另一表FGSHB
xrq 二分公司 三分公司 四分公司
2012-04-01 26896 22330 25919
2012-04-02 26913 22267 25355
2012-04-03 26527 22442 25934
2012-04-04 27043 22678 25918
2012-04-05 26764 23056 26858


------解决方案--------------------
create table t1
(
XRQ datetime,
RGL int,
JCMC varchar(20)
)
insert into t1
select '2012-04-01', 26896, '二分公司' union all
select '2012-04-01', 22330, '三分公司' union all
select '2012-04-01', 25919, '四分公司' union all
select '2012-04-02', 26913, '二分公司' union all
select '2012-04-02', 22267, '三分公司' union all
select '2012-04-02', 25355, '四分公司' union all
select '2012-04-03', 26527, '二分公司' union all
select '2012-04-03', 22442, '三分公司' union all
select '2012-04-03', 25934, '四分公司' union all
select '2012-04-04', 27043, '二分公司' union all
select '2012-04-04', 22678, '三分公司' union all
select '2012-04-04', 25918, '四分公司' union all
select '2012-04-05', 26764, '二分公司' union all
select '2012-04-05', 23056, '三分公司' union all
select '2012-04-05', 26858, '四分公司'
select * from t1

select CONVERT(varchar(10),XRQ,120) as XRQ,
MAX(case when JCMC='二分公司' then RGL else 0 end) as '二分公司',
MAX(case when JCMC='三分公司' then RGL else 0 end) as '三分公司',
MAX(case when JCMC='四分公司' then RGL else 0 end) as '四分公司'
from t1 
group by CONVERT(varchar(10),XRQ,120)

---------------------------------------
XRQ 二分公司 三分公司 四分公司
2012-04-01 26896 22330 25919
2012-04-02 26913 22267 25355
2012-04-03 26527 22442 25934
2012-04-04 27043 22678 25918
2012-04-05 26764 23056 26858