开发者

SQL Grouping Issues

I'm attempting to write a query that will return any customer that has multipl开发者_如何转开发e work orders with these work orders falling on different days of the week. Every work order for each customer should be falling on the same day of the week so I want to know where this is not the case so I can fix it.

The name of the table is Core.WorkOrder, and it contains a column called CustomerId that specifies which customer each work order belongs to. There is a column called TimeWindowStart that can be used to see which day each work order falls on (I'm using DATENAME(weekday, TimeWindowStart) to do so).

Any ideas how to write this query? I'm stuck here.

Thanks!


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 )
                )


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


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))
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜