我認爲這應該很容易,但我無法弄清楚。SQL Server:在單個查詢中結合最大結果和第二大結果
下面是一些背景資料:
我有兩個表,稱爲租賃和UtilityBills。他們通過名爲LeaseID的外鍵連接在UtilityBills表中,該表引用了Leases表中的主鍵(也稱爲LeaseID)。
所以這非常簡單 - 我爲每個租賃記錄每月的電錶讀數。
在UtilityBills表中,我有一個名爲MeterReadingDate的字段,它用於存儲每次讀取儀表讀數的日期。
這裏是我的問題:
如何創建一個查詢,這將給我,爲每個租賃,雙方最近一次抄表日期,和之前的抄表日期?
我能夠獲得最新的抄表每個租賃很輕鬆了,使用這個SQL語句:
SELECT LeaseID, MAX(MeterReadingDate) AS MostRecentMeterReadingDate
FROM dbo.UtilityBills
GROUP BY LeaseID
我也能得到之前抄表對於任何給定的租賃,使用該SQL聲明(例如,這給了我與LeaseID租賃之前抄表= 228):
SELECT TOP 1 MeterReadingDate, LeaseID
FROM (SELECT TOP 2 MeterReadingDate, LeaseID
FROM dbo.UtilityBills
WHERE (LeaseID = 228)
ORDER BY MeterReadingDate DESC) DERIVEDTBL
ORDER BY MeterReadingDate
我想不通,是如何將這兩個語句結合生成一個查詢,列出第二 - 最近的和最近的抄表日期,所有租約。據我所知,我需要在這種情況下使用CROSS APPLY,但無法使其工作。謝謝!
這將返回兩個單獨的行而不是一行 –
@rs:他說他需要他們在兩列? – Kaf
從他的問題,我認爲他希望在一行OP表示 - 「如何結合這兩個語句產生一個查詢,列出所有租約第二最近和最近的抄表日期。」# –