2014-10-16 51 views
0

使用由白癡創建的表格。問題表中沒有記錄標識,包含部件號和數量。一些零件號碼將重複幾十次,全部沒有數量,有些零件號碼。如果ANY記錄中的零件編號有一個數量,我希望該零件編號爲JUST一次,以便該子系統不一次爲主要多個值提供數據。僅子查詢第一匹配

SELECT d046d, e024a 
FROM 20121 
WHERE d046d=(select sc.d046d from 20121 as sc where e024a >0) 

這會失敗,因爲它會在子查詢中找到多條記錄。我已經嘗試DISTINCT和FIRST和ORDER BY的TOP 1。

所有失敗時,主查詢的一部分,按需要自己工作。

+0

添加順序除非我失去了一些東西,你不需要子查詢的。試試這個:'SELECT d046d,e024a FROM 20121 where e024a> 0 GROUP BY d046d,e024a'。另外,ick! – beercodebeer 2014-10-16 16:25:15

+0

如果有兩個相同的不同數量,則會在同一零件號上返回多個匹配。 – Kaw4Life 2014-10-16 16:37:51

回答

1

使用

SELECT DISTINCT 
    d046d, 
    e024a 
FROM 
    20121 
WHERE 
    e024a >0 
+0

謝謝巴里 - 這部分是需要的。 – Kaw4Life 2014-10-17 14:45:28

1
SELECT TOP 1 b.d046d, a.e024a 
FROM 20121 a 
inner join 
(select sc.d046d as d046d from 20121 as sc where e024a >0) b 
on a.d046d = b.d046d 

這不是適用於WHERE子句的解決方案。我認爲你需要加入到子查詢中,作爲一個自聯接。從那裏你可以選擇出現的結果集的前1個。你可以隨意玩別名。

+0

創建兩個查詢然後使用它們之間的內部聯接。這給了我我需要的東西。 – Kaw4Life 2014-10-17 14:52:48

1

你不需要WHERE子查詢。如果你只想要第一個記錄,你可以用TOP 條款得到它,通過

SELECT TOP 1 d046d, e024a 
FROM 20121 
WHERE e024a >0 
ORDER BY e024a desc