2010-07-17 72 views
2

我正在使用Derby
我有一個表有兩列X和Y.
我想選擇列X,但按Y列組。
這意味着我只想顯示每個行的第一個Y值的第一個Y值。SQL Derby:GROUP BY未選擇ID

我該怎麼做?

CREATE TABLE test (
    x INTEGER NOT NULL , 
    y INTEGER NOT NULL) 

INSERT INTO test VALUES (1,1) ,(1,2) ,(1,3) ,(2 ,3),(3,3) 

SELECT y FROM test GROUP BY x -- does not work 

我希望所有的y值有沒有重複的

原始數據

 
X Y 
-- -- 
1 1 
1 2 
1 3 
2 3 
3 3 

結果應該是:

 
X Y 
-- -- 
1 1 
1 2 
2 3 
+0

你想在'x'上做什麼聚合 - MAX,MIN? – 2010-07-17 15:02:29

+1

你的情況是什麼「第一個Y值」? – Gumbo 2010-07-17 15:03:36

+0

你的問題有點不清楚。發佈一些示例數據和您希望的輸出數據對於這些數據確實有幫助。 – 2010-07-17 15:17:20

回答

0

您必須指定你想要的X

select 
    min(X) X 
from 
    table 
group by 
    Y 
4

你必須aggregatex以某種方式:

SELECT Y, 
     MAX(X) AS Max_X, 
     AVG(X) AS Avg_X 

FROM  myTable 
GROUP BY Y 
ORDER BY Y 

最小值,最大值,平均值,首先,最後,等

如果你不關心哪個x你得到,也許只是選擇第一個還是最後一個:

SELECT Y, 
     First(X) AS X, 
FROM  myTable 
GROUP BY Y 
+0

我不需要任何聚合方法 我需要的值不重複 – shay 2010-07-18 19:44:48

0

我不熟悉的德比,但儘量像一個子查詢:

SELECT X 
FROM table 
WHERE Y in (SELECT MIN(Y) FROM table) 

這裏SELECT MIN(Y) FROM table是選擇Y的值(即你的「第一個Y值」,這裏是:Y的最小值)。