我当前的查询是重新编写的Oracle SQL查询
SELECT
STATUS,
POSTAL_CODE,
CITY_STATE,
(case when SERVICE = 1 THEN org_id) end) AS WATER,
(case when SERVICE = 2 THEN org_id) end) AS COFFEE,
(case when SERVICE = 3 THEN org_id) end) AS FILTRATION
FROM MAP
WHERE POSTAL_CODE = 02216
的结果:
Status Zip City_State Water Coffee Filtration
Serviceable 02216 BOSTON,MA. BEL null null
Serviceable 02216 BOSTON,MA. null BDG null
Serviceable 02216 BOSTON,MA. null null BEL
我想这个结果折叠成一排。是否有一些优雅的选择,我可以使用,或者我应该使用函数,如XMLAGG,XMLELEMENT为了将结果折叠成一行?另外,是否有更好的方法来编写这些案例陈述?可能使用where子句?
试过a_horse_with_no_name的建议如下:
SELECT STATUS,
POSTAL_CODE,
SERVICE_ITEM_ID,
MAX((case when SERVICE = 1 THEN org_id)) AS WATER,
MAX((case when SERVICE = 2 THEN org_id)) AS COFFEE,
MAX((case when SERVICE = 3 THEN org_id)) AS FILTRATION
FROM MAP
WHERE POSTAL_CODE = '02216'
GROUP BY STATUS, POSTAL_CODE, SERVICE_ITEM_ID;
STATUS POSTAL_CODE SERVICE_ITEM_ID WATER COFFEE FILTRATION
Serviceable 02216 1300 BEL null null
Serviceable 02216 1302 null BDG null
Serviceable 02216 1304 null null BEL
仍然相同的结果。
我需要为一排,我不知道你有没有错字有“成一列。”? –
@NomanArain:是的,这是一个错字,纠正了 –
你怎么做最大的varchar? –