我的查询结果如下所示。请注意,这是在多个表格上。
EMAIL(A) PROD_ID(B) PROD_NAME(B) CODE(C)
a@a.com 123456 SUNLIGHT A 002
a@a.com 123456 SUNLIGHT B 002
a@a.com 123456 SUNLIGHT C 002
a@a.com 768901 MOON 003
a@a.com 881231 STAR 004
我的查询如下。
SELECT A.EMAIL, B.PROD_ID, B.PROD_NAME, C.CODE
FROM A
INNER JOIN B ON B.EMAIL = A.EMAIL
INNER JOIN C ON C.CODE = B.CODE
GROUP BY A.EMAIL, B.PROD_ID, B.PROD_NAME, C.CODE
ORDER BY A.EMAIL, C.CODE
我需要每PROD_ID
只获得一行数据。我尝试使用MAX(B.PROD_ID) AS "PROD_ID"
,但我仍为PROD_ID
获取了多行。有人可以就此提出建议吗?还是帮帮我吧?非常感谢!
期望的结果是:
EMAIL(A) PROD_ID(B) PROD_NAME(B) CODE(C)
a@a.com 123456 SUNLIGHT A 002
a@a.com 768901 MOON 003
a@a.com 881231 STAR 004
感谢任何帮助。谢谢!
答案 0 :(得分:2)
您需要以某种方式折叠/聚合PROD_NAME。我使用MIN,因为它匹配你想要的结果。你可以使用任何聚合适合你:
SELECT A.EMAIL, B.PROD_ID, MIN(B.PROD_NAME), C.CODE
FROM A
INNER JOIN B ON B.EMAIL = A.EMAIL
INNER JOIN C ON C.CODE = B.CODE
GROUP BY A.EMAIL, B.PROD_ID, C.CODE
ORDER BY A.EMAIL, C.CODE