【问题标题】:SQL query to find non-matching fields in certain rows用于查找某些行中的不匹配字段的 SQL 查询
【发布时间】:2017-10-19 20:27:26
【问题描述】:

我的 SQL Server 表是这样的:

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 字段的数量,这没有帮助,因为这可能会有所不同但仍然可以.

【问题讨论】:

    标签: sql-server


    【解决方案1】:
    SELECT ProductRef
    FROM table
    WHERE COALESCE(LTRIM(RTRIM(ShopRef)), '') <> ''
    GROUP BY ProductRef
    HAVING MAX(ShopRef) <> MIN(ShopRef)
    

    【讨论】:

      【解决方案2】:

      试试这个:

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

      【讨论】:

      • "忽略无关紧要的空白店铺参考,它们可以被认为是匹配的"
      • 是的,你是对的。如果我添加一行以防止我将给出与您完全相同的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多