有两张表:
1、lihf_lang_t 数据是
USER_ID FEE_ID FEE
lihf gl 122.6
lihf sd 12
wang gl 30
yue sd 34
2、lihf_lang_desc_t 数据是
FEE_ID FEE_NAME
sd 水电费
gl 管理费请问怎么实现下面格式:
1、
yue 管理费 0
yue 水电费 34
wang 水电费 0
wang 管理费 30
....
2、
用户 管理费 水电费
yue 0 34
lihf 122.6 12
....非常典型的问题。
建表语句和数据为:大家可以在自己电脑上试试哈。
CREATE TABLE CRM_OWNER_USER.LIHF_LANG_DESC_T
(
FEE_ID VARCHAR2(10 BYTE),
FEE_NAME VARCHAR2(10 BYTE)
);Insert into LIHF_LANG_DESC_T
(FEE_ID, FEE_NAME)
Values
('sd', '水电费');
Insert into LIHF_LANG_DESC_T
(FEE_ID, FEE_NAME)
Values
('gl', '管理费');
COMMIT;CREATE TABLE CRM_OWNER_USER.LIHF_LANG_T
(
USER_ID VARCHAR2(10 BYTE),
FEE_ID VARCHAR2(10 BYTE),
FEE NUMBER(10,2)
);
SET DEFINE OFF;
Insert into LIHF_LANG_T
(USER_ID, FEE_ID, FEE)
Values
('lihf', 'gl', 122.6);
Insert into LIHF_LANG_T
(USER_ID, FEE_ID, FEE)
Values
('yue', 'sd', 34);
Insert into LIHF_LANG_T
(USER_ID, FEE_ID, FEE)
Values
('wang', 'gl', 30);
Insert into LIHF_LANG_T
(USER_ID, FEE_ID, FEE)
Values
('lihf', 'sd', 12);
COMMIT;
1、lihf_lang_t 数据是
USER_ID FEE_ID FEE
lihf gl 122.6
lihf sd 12
wang gl 30
yue sd 34
2、lihf_lang_desc_t 数据是
FEE_ID FEE_NAME
sd 水电费
gl 管理费请问怎么实现下面格式:
1、
yue 管理费 0
yue 水电费 34
wang 水电费 0
wang 管理费 30
....
2、
用户 管理费 水电费
yue 0 34
lihf 122.6 12
....非常典型的问题。
建表语句和数据为:大家可以在自己电脑上试试哈。
CREATE TABLE CRM_OWNER_USER.LIHF_LANG_DESC_T
(
FEE_ID VARCHAR2(10 BYTE),
FEE_NAME VARCHAR2(10 BYTE)
);Insert into LIHF_LANG_DESC_T
(FEE_ID, FEE_NAME)
Values
('sd', '水电费');
Insert into LIHF_LANG_DESC_T
(FEE_ID, FEE_NAME)
Values
('gl', '管理费');
COMMIT;CREATE TABLE CRM_OWNER_USER.LIHF_LANG_T
(
USER_ID VARCHAR2(10 BYTE),
FEE_ID VARCHAR2(10 BYTE),
FEE NUMBER(10,2)
);
SET DEFINE OFF;
Insert into LIHF_LANG_T
(USER_ID, FEE_ID, FEE)
Values
('lihf', 'gl', 122.6);
Insert into LIHF_LANG_T
(USER_ID, FEE_ID, FEE)
Values
('yue', 'sd', 34);
Insert into LIHF_LANG_T
(USER_ID, FEE_ID, FEE)
Values
('wang', 'gl', 30);
Insert into LIHF_LANG_T
(USER_ID, FEE_ID, FEE)
Values
('lihf', 'sd', 12);
COMMIT;
max(decode(t.fee_id,'sd',fee,0)) "水电费"
from lihf_lang_t t,lihf_lang_desc_t d
group by user_id
--1.
SELECT l.user_id,d.fee_name,l.fee FROM lihf_lang_t l,lihf_lang_desc_t d
where l.fee_id = d.fee_id
order by l.user_id--2.
select a.user_id,nvl(sum(f1),0) 管理费,nvl(sum(f2),0) 水电费 from
(select l.user_id,
case when d.fee_name = '管理费' then l.fee end f1,
case when d.fee_name = '水电费' then l.fee end f2
from lihf_lang_t l,lihf_lang_desc_t d
where l.fee_id = d.fee_id)a
group by a.user_id
order by a.user_id
select user_id,sum(decode(t.fee_id,'gl',fee,0)) "管理费",
sum(decode(t.fee_id,'sd',fee,0)) "水电费"
from lihf_lang_t t,lihf_lang_desc_t d
where t.fee_id=d.fee_id
group by user_id
select user_id,fee_name,max((case when t.fee_id=d.fee_id then fee else 0 end)) fee
from lihf_lang_desc_t t,lihf_lang_t d
group by user_id,fee_name
外连接是lihf_lang_t这个表里没有的fee_id而在lihf_lang_desc_t这个表里有的,
而你要的不是这样的结果