Finding customers with identical orders

前端 未结 3 1376
[愿得一人]
[愿得一人] 2021-01-03 11:24

I need to find customers who have made identical orders. (Using T-SQL)

Order

OrderID Customerer  
1   2   
2   5   
3   6            


        
3条回答
  •  暗喜
    暗喜 (楼主)
    2021-01-03 11:40

    This is an extension of Martin's second suggestion. This will show all matching combinations without any repetitions.

    ;With FmtOL(customer, orderid, complete_order) as
    (            
    SELECT  customer, orderid, complete_order
         FROM    Order O
                        cross apply ( SELECT    CAST(Quantity AS VARCHAR(30))
                                                + '~' + Reference + '~~'
                                      FROM      OrderLine OL
                                      WHERE     OL.OrderID = O.OrderID
                                      ORDER BY  Reference ,
                                                Quantity
                                    FOR
                                      XML PATH('')
                                    ) T ( complete_order )
    )
    SELECT  T1.OrderId, 
            T1.Customer,
            STUFF(C1.a, 1, 2, '') as [SameAs]
    FROM    FmtOL T1
    Cross apply ( SELECT '; ' + 'Customer ' + Cast(T2.Customer as varchar(30)) 
                      + '''s order ' + Cast(T2.OrderID as varchar(30))
                     FROM   FmtOL T2
                     WHERE  T1.Customer < T2.Customer
                       AND T1.OrderId < T2.OrderId
                       AND T1.complete_order = T2.complete_order
                     order by ';' + Cast(T2.Customer as varchar(30)) 
                        + '''s order ' + Cast(T2.OrderID as varchar(30))
                        , t2.orderid
                     for xml path('')
                 ) C1 (a)
      where C1.a is not null
    

    Results should look like this:

    OrderId Customer SameAs 
    1       2        Customer 6's order 3 
    4       2        Customer 8's order 7
    

提交回复
热议问题