2017-10-19 115 views
0

我的SQL Server表是這樣的:SQL查詢來發現不匹配字段中的某些行

ProductRef ShopID ShopRef 
-------------------------------- 
ABC    1  bla 
ABC    2   
ABC    3  bla 
DEF    1  rhu 
DEF    2  rhu 
XYZ    1  barb 
XYZ    2  baxb 
XYZ    3  barb 

店鋪裁判應該是同一產品的所有行相同。

我需要找到的是所有商店的參考不同所有商店(忽略空白店參考無關緊要,他們可以被認爲是匹配)。

所以在上面的例子中,我想返回XYZ。 ABC & DEF很好。 所有XYZ行或只是「XYZ」都可以工作。

我無法通過正確的方式對其進行分組以獲得此結果,迄今爲止我管理的最好的數量是每個產品的匹配ShopRef字段的數量,這是沒有用的,因爲這可能會有所不同,仍然是好。

回答

0
SELECT ProductRef 
FROM table 
WHERE COALESCE(LTRIM(RTRIM(ShopRef)), '') <> '' 
GROUP BY ProductRef 
HAVING MAX(ShopRef) <> MIN(ShopRef) 
+0

太好了,謝謝你 – Sparrowhawk

0

試試這個:

SELECT ProductRef 
FROM MyTable 
GROUP BY ProductRef 
HAVING MAX(ShopRef) <> MIN(ShopRef) 
+0

「忽略空白店引用這並不重要,它們可以被認爲是匹配的」 –

+1

是的,你是對的。如果我添加一行以防止我將提供與您完全相同的解決方案。 –