2014-12-03 111 views
0

我需要運行比較並返回差異。我發現很難用語法表達SQL查詢。邏輯在那裏,我可以解釋,但語法暗示我,你能幫忙嗎?將SQL查詢結果返回設置爲具有不同值的相同ID

我有一個表(位置)在一個架構中承載2個主鍵'locationID'和'materialID'。現在我在桌面上放置3個位置 - PlayM PlayB和Ing。通常情況下,我在每個位置都有一個materialID。

我需要檢查的是每個locationID上每個materialID的整數值持續時間。如果其中一個持續時間與匹配結果不匹配,則結果爲每個位置上的所有materialID返回,但持續時間不一致。

示例;

+------------+------------+----------+ 
| LOCATIONID | MATERIALID | DURATION | 
+------------+------------+----------+ 
| PlayM  | Clip1  |  626 | 
| PlayB  | Clip1  |  626 | 
| Ing  | Clip1  |  626 | 
| PlayM  | Clip2  |  600 | 
| PlayB  | Clip2  |  590 | 
| Ing  | Clip2  |  600 | 
+------------+------------+----------+ 

由於所有位置的持續時間相同,Clip1不會返回結果。但剪輯2應報告所有3個持續時間不同。

我的示例查詢將如下......注意,我失去了參照不等於:(

SELECT * FROM locations 
WHERE materialID IN (SELECT materialID WHERE duration <> 

你能幫忙嗎?

感謝....

SQL時瞭解

+0

你使用了哪個數據庫?適當標記問題。 – 2014-12-03 00:10:58

回答

0

如果是SQL SERVER你使用:

;with cte as(
    select 
     *, 
     cc = count(*) over(partition by MaterialId), 
     ccc = count(*) over(partition by MaterialId, Duration) 
    from Locations 
) 
select 
    LocationId, 
    MaterialId, 
    Duration 
from cte 
where cc <> ccc 
相關問題