2017-10-19 117 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

是的,你是对的。如果我添加一行以防止我将提供与您完全相同的解决方案。 –