簡體   English   中英

SQL 返回同一年的最后 30 條記錄

[英]SQL return last 30 records on the same year

在我的查詢中,我只想返回同一年內過去 30 天內保存的記錄,但我的查詢返回從今天的月份和日期開始的過去 30 天內發生的所有記錄,而不管年份如何。 我不知道我在較小的查詢中嘗試條件的原因是什么,它給出了正確的結果。

select top 10000 
      cb.billNo , MAX(cb.subCategoryID) subCategory ,
      Max(cb.cateogryID) categoryID ,
      MAX(tracking.date ) trackingDate,

      Max(Station.Code) Dest,Max(cb.picesCount) PieceCount, 
      Max(case when cb.productCount > 1 then 1 else 0 end) isMultiProduct ,
      Max(case when tt.ID = 1 and (cb. subCategoryID = 65 or cb. 
      subCategoryID 
      = 56) then 1 else 0 end) isReceived,
      
from CustomerBillss cb
     join Tracking on cw.billNo = Tracking.billNo
     join trackingtype tt on Tracking.TrackingTypeID = tt.ID
     join Station on cb.destinationStationID = Station.ID

where 
tracking.date > dateadd(dd,-30,cast(getdate() as date))
--(YEAR(tracking.Date) = YEAR(GETDATE()) AND
--tracking.Date >= DATEADD(day,-30,GETDATE()))
AND
cb. cateogryID in (1, 3)
AND Tracking.TrackingTypeID not in (8 , 4 ,20) 
AND cb.subCategoryID != 30 or (
   subCategoryID = 30 and cb.DestinationStationID = tracking.StationID)
group by cb.billNo;

只需在您的選擇中取消注釋年份過濾器

select top 10000 
          cb.billNo , MAX(cb.subCategoryID) subCategory ,
          Max(cb.cateogryID) categoryID ,
          MAX(tracking.date ) trackingDate,
    
          Max(Station.Code) Dest,Max(cb.picesCount) PieceCount, 
          Max(case when cb.productCount > 1 then 1 else 0 end) isMultiProduct ,
          Max(case when tt.ID = 1 and (cb. subCategoryID = 65 or cb. 
          subCategoryID 
          = 56) then 1 else 0 end) isReceived,
          
    from CustomerBillss cb
         join Tracking on cw.billNo = Tracking.billNo
         join trackingtype tt on Tracking.TrackingTypeID = tt.ID
         join Station on cb.destinationStationID = Station.ID
    
    where 
    tracking.date > dateadd(dd,-30,cast(getdate() as date))
    (YEAR(tracking.Date) = YEAR(GETDATE()) AND
    --tracking.Date >= DATEADD(day,-30,GETDATE()))
    AND
    cb. cateogryID in (1, 3)
    AND Tracking.TrackingTypeID not in (8 , 4 ,20) 
    AND cb.subCategoryID != 30 or (
       subCategoryID = 30 and cb.DestinationStationID = tracking.StationID)
    group by cb.billNo;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM