获取公共列值结果计数大于1的SQL结果

时间:2019-12-11 05:16:32

标签: sql sql-server

我有一个表A和4列产品,变体,零件,订单。产品,变量可能具有相同的数据,但列顺序不同。我想从相同的产品,变体数据中找出订单值大于1的那些行。

Product Variant Part    Order
------------------------------
ab        vb     a1       1
ab        vb     a2       1
ab        vb     a3       2a
ab        vb     a4       3
ab        vb     a5       4.1

像上面一样,我想要第一行和第二行作为结果,因为它们具有不同的Part,但是它们的顺序相同。

因此,我想搜索具有相同“产品”和“变体”的条目,并且将多个零件放在同一订单上,以便我可以管理此类情况下的订购。

3 个答案:

答案 0 :(得分:2)

另一种选择是在这里使用存在逻辑:

SELECT Product, Variant, Part, [Order]
FROM tableA a1
WHERE EXISTS (SELECT 1 FROM tableA a2
              WHERE a2.Product = a1.Product AND
                    a2.Variant = a1.Variant AND
                    a2.[Order] = a1.[Order] AND
                    a2.Part <> a1.Part);

screen capture of demo link below

Demo

答案 1 :(得分:0)

您可以GROUP BY ProductVariantOrder并检查count(distinct Part)是否大于1

; with CTE as
(
    SELECT Product, Variant, [Order]
    FROM   yourtable
    GROUP BY Product, Variant, [Order]
    HAVING COUNT(distinct Part) > 1
)
SELECT t.*
FROM   CTE c
       INNER JOIN yourtable t ON  c.Product = t.Product
                              AND c.Variant = t.Variant
                              AND c.[Order] = t.[Order]

答案 2 :(得分:0)

您可以尝试

http://localhost:3110/