我正在尝试编写一个查询,该查询将返回具有多个工作订单的任何客户,这些工作订单属于一周中的不同日期。每个客户的每个工单都应该在一周的同一天落下,所以我想知道不是这样的情况所以我可以解决它。
表的名称是Core.WorkOrder,它包含一个名为CustomerId的列,用于指定每个工作订单所属的客户。有一个名为TimeWindowStart的列可用于查看每个工单的哪一天(我正在使用DATENAME(工作日,TimeWindowStart))。
任何想法如何编写此查询?我被困在这里。
谢谢!
答案 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))