簡體   English   中英

普適 SQL 2000i 數據庫上次事務查詢

[英]Pervasive SQL 2000i Database Last Transaction Query

我有一個舊數據庫,名為:Pervasive SQL 2000i,該數據庫來自 90 年代末和 2000 年代初。 文檔很少,除了來自 Actian(稱為 Zen)和 Goldstar Software(很友好地回答我的問題)。 這篇文章是關於如何查詢每個不同時期的數據的問題。 這個問題可能適用於所有數據庫,因為這只是一個標准的 SQL 語句,但是對於我來說,我仍然很難在單個 SQL 語句上檢索數據。

我有一個看起來像這樣的 Pervasive 表:

CREATE TABLE `NLBAL` (
    `acct` VARCHAR(32),
    `PerioEndDate` DATE,
    `Amt` DECIMAL,
    `YTDAmt` DECIMAL
);

(創建表由 wtools 提供)

然后是部分數據:

Acct                PeriodEndDate    Amt               YTDAmt          
01212121221220      2017-11-30       -5000             40000 
01212121221220      2017-12-31       -5000             40000          
12010111111111      2020-09-31       -4000             12000           
12010111111111      2020-10-31       1000              80000    

   

如果我使用這個 SQL 語句:

SELECT Acct,PeriodEndDate,Amt,YTDAmt FROM NLBAL 
WHERE PeriodEndDate = (SELECT Max(PeriodEndDate) FROM NLBAL)

當然,結果僅基於“最大”日期,將忽略其他帳戶的先前日期,它將顯示所有具有等效 = max 日期的記錄,並忽略那些沒有的記錄(預期結果):

Acct                PeriodEndDate    Amt               YTDAmt          
12010111111111      2020-10-31       1000              80000  

如我們所見,我的查詢無法從帳戶“01212121221220”中獲取結果,該帳戶具有 2017 年的最后記錄交易,並且由於 2020-10-31 是表上的最新記錄,數據庫將使用該日期過濾結果.

我希望結果是:

Acct                PeriodEndDate    Amt               YTDAmt          
01212121221220      2017-12-31       -5000             40000                   
12010111111111      2020-10-31       1000              80000  

我只想查詢所有賬戶及其對應的最后一筆交易(1 個記錄),無論日期是什么,只要它是每個賬戶的最后一筆交易。 這意味着結果需要為每個帳戶只記錄一個記錄,其中記錄的交易是基於最大/最新日期的最后一個交易。

我該怎么做呢?

謝謝你的任何建議。

好的,我最終這樣做了:

SELECT Acct,Max(PeriodEndDate) as PeriodEndDate FROM NLBAL     
WHERE ACCT IN
('01212121221220','12010111111111')
GROUP BY Acct --(I actually have more than 600 records to query.)

將結果導出到包含 Acct、PeriodEndDate 列的新表“ACCTPRD”。

然后我使用這個查詢:

SELECT DISTINCT Acct,PeriodEndDate,Amt,YTDAmt FROM NLBAL 
WHERE PeriodEndDate in (SELECT PeriodEndDate FROM ACCTPRD WHERE Acct=NLBAL.Acct)

然后我得到了我想要的結果。 但是,我願意接受比我這里的建議更優化的建議。

謝謝。

暫無
暫無

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

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