周一获取周五和周六的数据



我正在处理一个查询,周一它会给我周五和周六的数据。周二到周五,它会给我昨天的数据。到目前为止,我的问题是:

[MVMT_NUMBER],
CAST(RIGHT([MVMT_NUMBER], PATINDEX('%[0-9][^0-9]%', REVERSE([MVMT_NUMBER])+' ')) as INT) as movement,
[MVMT_TYPE], 
[OPERATOR],
[EQUIPMENT],
[ORIG],
[DEST],
[MVMT_STATUS],
CASE WHEN  [GROSS_WEIGHT_(KG)] < 0 THEN 0 ELSE [GROSS_WEIGHT_(KG)] END AS [GROSS_WEIGHT_(KG)],
CASE WHEN [NET_WEIGHT_(KG)]< 0 THEN 0 ELSE [NET_WEIGHT_(KG)] END AS [NET_WEIGHT_(KG)],
CASE WHEN [NMBR_ULDS] < 0 THEN 0 ELSE [NMBR_ULDS] END AS [NMBR_ULDS],
CASE WHEN [NMBR_POS] < 0 THEN 0 ELSE [NMBR_POS] END AS [NMBR_POS]
FROM SERVER
WHERE [F-T-O] = 'T'
AND DEST IN ('CVG', 'CVG CRN', 'MIA', 'MIA GTW', 'LAX', 'LAX GTW', 'JFK', 'JFK GTW', 'ORD', 'ORD GTW')
AND [MVMT_NUMBER] LIKE 'X%'
AND [MVMT_NUMBER] NOT LIKE '%a%' 
AND MVMT_DT = CONVERT(date, getdate()-1)```

DECLARE @today date = GETDATE();
DECLARE @start date = DATEADD(DAY, 
CASE WHEN DATENAME(WEEKDAY, @today) = N'Monday' 
THEN -3 ELSE -1 END, @today);
SELECT ...
WHERE ...
AND MVMT_DT >= @start
AND MVMT_DT <  @today;

不要使用getdate()-1,这是一条隐藏技术债务的懒惰捷径。

最新更新