表结构如下,共7个:user
--------------------
user_id user_name
user_add
------------------------------
user_id add_type_id add_id
add_type
--------------------------------
add_type_id add_type
address
-----------------------
add_id address
user_phone
--------------------------------------
user_id phone_type_id phone_id
phone_type
--------------------------
phone_type_id phone_type
phone
----------------
phone_id phone想输出以下结果:
user_name add_type(1) address(1) add_type(2) address(2) phone_type(1) phone(1) phone_type(2) phone(2)
-------------------------------------------------------------------------------------------------------------------
admin home no22, st office no99,rd home 111111111 null null
operator home no32, st null null home 333333333 mobile 22222222
* null 是指查到相应结果为空.不知道大家看明白了没,我折腾了好久都没选出来,不是缺值,就是数值重复,请高人指点,多谢!!!
由于页面限制,输出行出现了错位, 输出结果可能看起来别扭,请将其Copy到记事本里,能看的更直观,更清楚些,见谅
--------------------
user_id user_name
user_add
------------------------------
user_id add_type_id add_id
add_type
--------------------------------
add_type_id add_type
address
-----------------------
add_id address
user_phone
--------------------------------------
user_id phone_type_id phone_id
phone_type
--------------------------
phone_type_id phone_type
phone
----------------
phone_id phone想输出以下结果:
user_name add_type(1) address(1) add_type(2) address(2) phone_type(1) phone(1) phone_type(2) phone(2)
-------------------------------------------------------------------------------------------------------------------
admin home no22, st office no99,rd home 111111111 null null
operator home no32, st null null home 333333333 mobile 22222222
* null 是指查到相应结果为空.不知道大家看明白了没,我折腾了好久都没选出来,不是缺值,就是数值重复,请高人指点,多谢!!!
由于页面限制,输出行出现了错位, 输出结果可能看起来别扭,请将其Copy到记事本里,能看的更直观,更清楚些,见谅
ID NO Name Course Score
1 001 赵 语文 80
2 001 赵 数学 40
3 001 赵 英语 60
4 002 李 语文 50
5 002 李 数学 30
6 003 唐 语文 20
Sql语句执行结果如下:
NO Name AllCouse 总分
001 赵 语文,数学,英语 180
002 李 语文,数学 80
003 唐 语文 20
select no,name,yw||xx||yy AllCouse,"语文"+"数学"+"英语" 总分 from
(select no,name, case when 语文<>0 then '语文' end yw,case when 数学<>0 then ',数学' end xx,case when 英语<>0 then ',英语' end yy,
"语文","数学","英语" from
(select no,name ,nvl(sum("语文"),0) "语文",nvl(sum("数学"),0) "数学",nvl(sum("英语"),0) "英语"
from (select no,name,
case when Course='语文' then nvl(SUM(score),0) end "语文",
case when Course='数学' then nvl(SUM(score),0) end "数学",
case when Course='英语' then nvl(SUM(score),0) end "英语"from lht_test
group by no,name,course) t
group by no,name) tt) ttt
楼主参考一下,使用遍历把记录横过来。