在 SQL Server 中使用非零檢查值高效檢索最新記錄
本文示範如何檢索 SQL Server 表中每個群組的最新記錄,特別關注「checks」列值大於零的記錄。 讓我們考慮一個具有以下結構的範例表:
<code>| GroupID | RecordDate | CashAmount | CheckAmount | |---|---|---|---| | 1 | 2013-01-01 | 0 | 0 | | 2 | 2013-01-01 | 0 | 800 | | 1 | 2013-01-03 | 0 | 700 | | 3 | 2013-01-01 | 0 | 600 | | 1 | 2013-01-02 | 0 | 400 | | 3 | 2013-01-05 | 0 | 200 |</code>
我們的目標是得到以下結果集:
<code>| GroupID | RecordDate | CheckAmount | |---|---|---| | 2 | 2013-01-01 | 800 | | 1 | 2013-01-03 | 700 | | 3 | 2013-01-05 | 200 |</code>
以下是如何使用 SQL 查詢實現此目的:
首先,我們確定每個 RecordDate
的最大值 GroupID
,其中 CheckAmount
大於 0:
<code class="language-sql">SELECT GroupID, MAX(RecordDate) AS MaxRecordDate FROM YourTable WHERE CheckAmount > 0 GROUP BY GroupID;</code>
然後,我們將此結果連接回原始表以檢索相應的CheckAmount
:
<code class="language-sql">SELECT yt.GroupID, yt.RecordDate, yt.CheckAmount FROM YourTable yt INNER JOIN ( SELECT GroupID, MAX(RecordDate) AS MaxRecordDate FROM YourTable WHERE CheckAmount > 0 GROUP BY GroupID ) AS MaxDates ON yt.GroupID = MaxDates.GroupID AND yt.RecordDate = MaxDates.MaxRecordDate;</code>
此查詢有效過濾非零支票金額,並僅選擇每組的最新記錄。 請記得將 YourTable
替換為您的表的實際名稱。 強烈建議使用描述性列名稱(例如 GroupID
和 CheckAmount
),以提高程式碼的可讀性和可維護性。
以上是如何在 SQL Server 中透過非零檢查來尋找每個群組的最新記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!