读书人

交叉表有关问题有例子来

发布时间: 2012-02-20 21:18:24 作者: rapoo

交叉表问题,有例子,高手进来
select re2_result_rsi_azo.job_no,
re2_module_rsi_azo.amine_name,
(case composite_id when 1 then 'A+C ' end ) as res1,
(case composite_id when 2 then 'B+D ' end ) as res2,
(case composite_id when 3 then 'E+F ' end ) as res3

from re2_result_rsi_azo, re2_module_rsi_azo

where re2_result_rsi_azo.amine_id = re2_module_rsi_azo.amine_id

group by re2_result_rsi_azo.job_no,
re2_module_rsi_azo.amine_name,
composite_id

上面是sql,下面是结果

job_noamine_nameres1res2res3
J00047879 kkkkllkA+C
J00047879 kkkkllkB+D
J00047879 kkkkllk
J00047879 ooooooooooasdfA+C
J00047879 ooooooooooasdfB+D
J00047879 ooooooooooasdf

为什么都不出现在一行?
group 中如果没有这一列的话,sqlserver 报错 composite_i
应该怎么弄?

[解决办法]
--update
Select re2_result_rsi_azo.job_no, re2_module_rsi_azo.amine_name,
max(case composite_id when 1 then 'A+C ' end ) as res1,
max(case composite_id when 2 then 'B+D ' end ) as res2,
max(case composite_id when 3 then 'E+F ' end ) as res3
from re2_result_rsi_azo, re2_module_rsi_azo
where re2_result_rsi_azo.amine_id = re2_module_rsi_azo.amine_id
group by re2_result_rsi_azo.job_no, re2_module_rsi_azo.amine_name
[解决办法]
加上max理即可
[解决办法]
整理下,加上名

select
A.job_no,
B.amine_name,
Max(case composite_id when 1 then 'A+C ' end ) as res1,
Max(case composite_id when 2 then 'B+D ' end ) as res2,
Max(case composite_id when 3 then 'E+F ' end ) as res3
from re2_result_rsi_azo A, re2_module_rsi_azo B
where A.amine_id = B.amine_id
group by A.job_no, B.amine_name, composite_id
[解决办法]
select
A.job_no,
B.amine_name,
Max(case composite_id when 1 then 'A+C ' end ) as res1,
Max(case composite_id when 2 then 'B+D ' end ) as res2,
Max(case composite_id when 3 then 'E+F ' end ) as res3
from
re2_result_rsi_azo A,
re2_module_rsi_azo B
where
A.amine_id = B.amine_id
group by
A.job_no, B.amine_name

读书人网 >SQL Server

热点推荐