SQL分组问题

时间:2011-03-28 15:32:34

标签: sql grouping

我正在尝试编写一个查询,该查询将返回具有多个工作订单的任何客户,这些工作订单属于一周中的不同日期。每个客户的每个工单都应该在一周的同一天落下,所以我想知道不是这样的情况所以我可以解决它。

表的名称是Core.WorkOrder,它包含一个名为CustomerId的列,用于指定每个工作订单所属的客户。有一个名为TimeWindowStart的列可用于查看每个工单的哪一天(我正在使用DATENAME(工作日,TimeWindowStart))。

任何想法如何编写此查询?我被困在这里。

谢谢!

3 个答案:

答案 0 :(得分:1)

SELECT  *
FROM    (
        SELECT  *,
                COUNT(dp) OVER (PARTITION BY CustomerID) AS cnt
        FROM    (
                SELECT  DISTINCT CustomerID, DATEPART(dw, TimeWindowStart) AS dp
                FROM    workOrder
                ) q
        ) q
WHERE   cnt >= 2

答案 1 :(得分:1)

Select ...
From WorkOrder As W
Where Exists    (
                Select 1
                From WorkOrder As W1
                    And W1.CustomerId = W.CustomerId    
                    And DatePart( dw, W1.TimeWindowStart ) <> DatePart( dw, W.TimeWindowStart )
                )

答案 2 :(得分:0)

SELECT CustomerId,
       MIN(DATENAME(weekday, TimeWindowStart)), 
       MAX(DATENAME(weekday, TimeWindowStart))
FROM Core.WorkOrder
GROUP BY CustomerId
HAVING MIN(DATENAME(weekday, TimeWindowStart)) != MAX(DATENAME(weekday, TimeWindowStart))