【发布时间】:2018-08-09 15:10:48
【问题描述】:
我有一个查询,例如...
SELECT a.order_number, b.state
from tableone a
tabletwo b
WHERE
1=1
AND a.id = b.id
AND a.order_number = '12345';
这个输出:
order_number state
12345 CA
12345 AZ
12345 NY
我正在寻找而不是让它返回一个串联的行,以便我可以将此结果保留为一行。
order_number state
12345 CA,AZ,NY
所以我建立了这个:
SELECT
a.order_number,
LISTAGG(b.state, ',') WITHIN GROUP (ORDER BY a.order_number) AS states
from tableone a
tabletwo b
WHERE
1=1
AND a.id = b.id
AND a.order_number = '12345'
GROUP BY a.order_number;
现在 - 我的问题是 - 如何为这些状态分配值?只有 3 个 - CA、AZ 和 NY,其中 CA = 1、AZ = 2 和 NY = 3。我要么必须执行此逻辑才能与另一个使用这些数值表示状态的应用程序同步SQL,或者在后端的另一个系统中,如果可能的话,我更愿意在这里做......
我希望我的输出如下所示:
order_number state
12345 1,2,3
【问题讨论】:
-
CA永远是1,AZ永远是2,NY永远是3。如果NY存在,我想用3代替。如果CA存在,我想用1代替。跨度>