我有一個名為“串列”的表,如下所示:
Id RealEstateAgentId DepartmentId Status CityId ProvinceId CountryId
ListingPostedDate ListingExpirydate
Status 列可以具有以下值:
- 1 - 主動
- 2 - 已售出
- 3 - 過期
現在,我想通過按剩余天數從低到高排序來獲得最接近到期??日期的前 10 個活躍串列。如果超過 1 個串列的到期日期相同,那么我們將根據Id主列(從最低到最高)進行排序。
但我沒有得到最近到期日的邏輯。
例如:如果要查找到期日期在 2 個月內的串列,那么下面的內容應該沒問題:
select *
from Listings
where ListingExpirydate < dateadd(month, 2, getdate());
有人可以幫助我提供想法或邏輯嗎?
uj5u.com熱心網友回復:
現在,我想獲得排名前 10 的活躍串列
SELECT TOP(10)
WHERE status = 1
通過按剩余天數從最低到最高排序,具有最接近的到期日期。如果超過 1 個串列的到期日期相同,那么我們將根據“Id”主列(從最低到最高)進行排序。
ORDER BY listingexpirydate, id
完整的查詢:
select top(10) *
from listings
where status = 1
order by listingexpirydate, id;
uj5u.com熱心網友回復:
最近的到期日
為此,我們應該用ListingExpirydate列檢查當前日期以獲取壁櫥過期記錄
DATEDIFF(day, GETDATE(), l.ListingExpirydate)
對于前 10 名和活動記錄,應用這些過濾器來查詢:
select top(10) l.*
...
where status= 1
最終代碼如下:
select top(10) l.*,
DATEDIFF(day, GETDATE(), l.ListingExpirydate) daysLeftToExpire
from Listings l
where status= 1
order by DATEDIFF(day, GETDATE(), l.ListingExpirydate) , id
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/348034.html
標籤:sql sql-server
