2016-09-15 90 views
0

我的查詢結果如下。請注意,這是在多個表格上。在多個表格的一列中選擇唯一值

EMAIL(A) PROD_ID(B) PROD_NAME(B) CODE(C) 
[email protected] 123456  SUNLIGHT A  002 
[email protected] 123456  SUNLIGHT B  002 
[email protected] 123456  SUNLIGHT C  002 
[email protected] 768901  MOON   003 
[email protected] 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只得到1行數據。我嘗試使用MAX(B.PROD_ID) AS "PROD_ID",但我仍然得到多行PROD_ID。任何人都可以提出一些建議嗎?還是幫助我?非常感謝!

期望的結果是:

EMAIL(A) PROD_ID(B) PROD_NAME(B) CODE(C) 
[email protected] 123456  SUNLIGHT A  002 
[email protected] 768901  MOON   003 
[email protected] 881231  STAR   004 

任何幫助理解。謝謝!

回答

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 
+0

謝謝!我一直在試圖使用MAX不知道MIN會做的伎倆。 :) 非常感謝! – thebeast22

+0

我認爲這個查詢將無法正常工作的情況下,列EMAIL將包含不同的值。 – AlexSmet

+0

是的,但是可以使用相同的技巧。 –