我搜索了许多类似的主题,但我仍在努力让这项工作得以实现。我正在尝试在执行一些表连接之后对一列进行分组。非常感谢任何帮助
今天输出
Account System System Plan Code Account Plan Code Request
12345 Sys1 Sys1 P1 12345 P1 00001
12345 Sys1 Sys1 P2 NULL NULL NULL
12345 Sys2 Sys2 P3 12345 P3 00002
34567 Sys1 Sys1 P1 NULL NULL NULL
34567 Sys1 Sys1 P2 34567 P2 00003
45678 Sys3 Sys3 P4 NULL NULL NULL
期望的输出
Account System System Plan Code Account Plan Code Request
12345 Sys1 Sys1 P1 12345 P1, P2 00001
12345 Sys2 Sys2 P3 12345 P3 00002
34567 Sys1 Sys1 P2 34567 P1,P2 00003
45678 Sys3 Sys3 P4 NULL NULL NULL
我正在加入几个表格,我希望将每个唯一帐户到系统映射的计划代码合并为一行。
我迷失了这个小组,我尝试了一个单独的GROUP BY并获得了不是GROUP By Expression的错误。所以我包括了所有列,并且根本不会改变输出。
SELECT A.ACCOUNT, A.SYSTEM, B.SYSTEM, B.PCODE, C.ACCOUNT, C.PCODE, C.REQUEST
FROM MYDB.TAB1 A
LEFT JOIN MYDB.TAB2 B
ON A.SYSTEM = B.SYSTEM
LEFT JOIN MYDB.TAB3 C
ON A.ACCOUNT = C.ACCOUNT AND B.PCODE = C.PCODE
WHERE A.ACCOUNT IS NOT NULL
ORDER BY A.ACCOUNT
答案 0 :(得分:1)
如果您不需要连接计划,请查看以下GROUP BY
实施是否符合您的需求。我为此脚本删除了几列。为了符合汇总查询限制,我使用了MAX
C.PCODE
(也可能是MIN
)和MAX
C.REQUEST
这似乎是一个不错的选择在那里摆脱NULL
。
SELECT A.ACCOUNT, A.SYSTEM, MAX(C.PCODE), MAX(C.REQUEST)
FROM MYDB.TAB1 A
LEFT JOIN MYDB.TAB2 B
ON A.SYSTEM = B.SYSTEM
LEFT JOIN MYDB.TAB3 C
ON A.ACCOUNT = C.ACCOUNT AND B.PCODE = C.PCODE
WHERE A.ACCOUNT IS NOT NULL
GROUP BY A.ACCOUNT, A.SYSTEM
ORDER BY A.ACCOUNT