有两张表:
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.   

    select user_id,max(decode(t.fee_id,'gl',fee,0)) "管理费",
    max(decode(t.fee_id,'sd',fee,0)) "水电费"
    from lihf_lang_t t,lihf_lang_desc_t d
    group by user_id
      

  2.   


    --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
      

  3.   

    --应该是这样
    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
      

  4.   

    -- 一、
    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
      

  5.   

    一开始我想到的也是外连接 但是执行的结果不是你想要的,我就想了下。
    外连接是lihf_lang_t这个表里没有的fee_id而在lihf_lang_desc_t这个表里有的,
    而你要的不是这样的结果