Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在查询多个结果时使用解码?_Sql_Oracle_Group By_Left Join_Decode - Fatal编程技术网

Sql 在查询多个结果时使用解码?

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

但当我运行它时。查询为我进行的每个解码返回一行。我想为这个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 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>