我正試圖獲取特定賬戶名稱的起始日期不同的記錄。我有以下樣本資料。
示例資料腳本如下
create table Meter (AccountNumer varchar(50), MeterNumber varchar(50), StartDate date)
插入 進入米值('0142628117'。 '123470203','4/22/2020')
插入 進入米值('0142628117', '123470205','4/22/2020')
插入 進入米值('0160059948', '100094717','4/24/2020')
插入 進入米值('0160059948', '328144931','4/24/2020')
插入 進入米值('0500000178767001363445', 'TCA105238304','10/2/2018')
插入 進入米值('0500000178767001363445', 'TCA130359929','8/12/2019')
插入 進入米值('0500071816677001432356', '1ND386803501','8/20/2019')
插入 進入米值('0500071816677001432356', '99D024666064','7/18/2019')
行號 帳戶號碼 電表號碼 開始日期
1 0500000178767001363445 TCA105238304 10/2/2018
2 0500000178767001363445 TCA130359929 8/12/2019
3 0160059948 100094717 4/24/2020
4 0160059948 328144931 4/24/2020
5 0500071816677001432356 1ND386803501 8/20/2019
6 0500071816677001432356 99D024666064 7/18/2019>
7 0142628117 123470203 4/22/2020
8 0142628117 123470205 4/22/2020
我試圖只獲得開始日期與賬號不同的記錄(兩行)。所以我對上表的期望結果如下。
預期的結果
RowNo AccountNumber MeterNumber StartDate
1 0500000178767001363445 TCA105238304 10/2/2018
2 0500000178767001363445 TCA130359929 8/12/2019
5 0500071816677001432356 1ND386803501 8/20/2019
6 0500071816677001432356 99D024666064 7/18/2019
非常感謝任何幫助。
uj5u.com熱心網友回復:
你可以使用視窗函式來實作。
我們只是按AccountNumber對結果進行磁區,并檢查每個磁區的最大和最小StartDate是否不同。
SELECT *
FROM (
SELECT *,
MinDate = MIN(m.StartDate) OVER (PARTITION BY m.AccountNumber) 。
MaxDate = MAX(m.StartDate) OVER (PARTITION BYm.AccountNumber)
FROM Meter m
) m
WHERE MinDate <> MaxDate;
uj5u.com熱心網友回復:
你可以試試下面的查詢
select ROW_NUMBER() OVER(ORDER BYm. 帳戶號碼)RowNo , m.AccountNumer,m.MeterNumber,m.StartDate
from meter m
INNER JOIN meter n ON m.AccountNumer= n.AccountNumer
and m.StartDate <> n.StartDate
如果你遇到任何問題或需要任何改變,請告訴我。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314804.html
標籤:
上一篇:在SQL中基于條件創建另一個列
下一篇:如何對字母數字列進行求和
