Sql 在查询多个结果时使用解码?
但当我运行它时。查询为我进行的每个解码返回一行。我想为这个id pe.phys\u resr\u id写一行,在同一行中有不同的数据。有什么建议吗? 我希望它能给我这样的信息:Sql 在查询多个结果时使用解码?,sql,oracle,group-by,left-join,decode,Sql,Oracle,Group By,Left Join,Decode,但当我运行它时。查询为我进行的每个解码返回一行。我想为这个id pe.phys\u resr\u id写一行,在同一行中有不同的数据。有什么建议吗? 我希望它能给我这样的信息: SELECT PE.PHYS_RESR_ID,PE.EQMT_INIT, PE.EQMT_NBR, decode (EEU.dimn_type , 'EXTHGT', EEU.dimn_valu) as EXTHGT, decode(EEU.dimn_type, 'EXTHGT', EEU.uom_code) as
SELECT PE.PHYS_RESR_ID,PE.EQMT_INIT, PE.EQMT_NBR,
decode (EEU.dimn_type , 'EXTHGT', EEU.dimn_valu) as EXTHGT,
decode(EEU.dimn_type, 'EXTHGT', EEU.uom_code) as UNIT_EXTHGT,
decode (EEU.dimn_type , 'INHGT', EEU.dimn_valu) as INHGT,
decode(EEU.dimn_type, 'INHGT', EEU.uom_code) as UNIT_INHGT,
decode (EEU.dimn_type , 'INWDTH', EEU.dimn_valu) as INWDTH,
decode(EEU.dimn_type, 'INWDTH', EEU.uom_code) as UNIT_INWDTH
FROM EQU_EQMT PE
left join EQU_EQMT_DIMN EEU
on EEU.PHYS_RESR_ID = PE.PHYS_RESR_ID
and ( EEU.POS_DESC is null or EEU.POS_DESC ='VALU' or EEU.POS_DESC ='valu');
我会使用MAX(DECODE(…)
习惯用法:
我会使用MAX(DECODE(…)
习惯用法:
请提供示例数据和所需输出。我将所需输出与一些数据放在一起。我想只有一个例子是可以的。请提供样本数据和期望的输出。我把期望的输出和一些数据放在一起。我认为只有一个例子是可以的。
+-------------+-------------+---------+--------+------------+---------+------------+------------+---------------+
| PHYS_RESR_ID| EQMT_INIT | EQMT_NBR| EXTWD | UNIT_EXTWD | INHGT | UNIT_INGHT | INWDTH | UNIT_INWDTH |
+-------------+-------------+---------+--------+------------+---------+------------+-------------+--------------+
| 456 | AC | 3 | 4 | IN | NULL | NULL | NULL | NULL |
| 324 | AD | 45 | 67 | IN | 56 | IN | NULL | NULL |
| 132 | B | 65 | 54 | IN | 78 | IN | 34 | IN |
+----+-------------+---------+--------+--------+------------+---------+------------+-------------+--------------+
SQL> SET NULL [NULL]
SQL> SELECT pe.phys_resr_id
2 , pe.eqmt_init
3 , pe.eqmt_nbr
4 , MAX(DECODE(eeu.dimn_type, 'EXTHGT', eeu.dimn_valu)) AS exthgt
5 , MAX(DECODE(eeu.dimn_type, 'EXTHGT', eeu.uom_code)) AS unit_exthgt
6 , MAX(DECODE(eeu.dimn_type, 'INHGT' , eeu.dimn_valu)) AS inhgt
7 , MAX(DECODE(eeu.dimn_type, 'INHGT' , eeu.uom_code)) AS unit_inhgt
8 , MAX(DECODE(eeu.dimn_type, 'INWDTH', eeu.dimn_valu)) AS inwdth
9 , MAX(DECODE(eeu.dimn_type, 'INWDTH', eeu.uom_code)) AS unit_inwdth
10 FROM equ_eqmt pe
11 LEFT JOIN equ_eqmt_dimn eeu ON eeu.phys_resr_id = pe.phys_resr_id
12 AND (eeu.pos_desc IS NULL OR eeu.pos_desc = 'VALU' OR eeu.pos_desc ='valu')
13 GROUP BY pe.phys_resr_id
14 , pe.eqmt_init
15 , pe.eqmt_nbr
16 ;
PHYS_RESR_ID EQMT_INIT EQMT_NBR EXTHGT UNIT_EXTHG INHGT UNIT_INHGT INWDTH UNIT_INWDT
------------ ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
456 AC 3 4 IN [NULL] [NULL] [NULL] [NULL]
324 AD 45 67 IN 56 IN [NULL] [NULL]
132 B 65 54 IN 78 IN 34 IN
SQL>