1

一意の documentid-physician-patient トリプレットの最新の値を返すスクリプトを作成しようとしています。group by ステートメントと同様に動作するスクリプトが必要ですが、group by は一度に 1 つの列でしか機能しません。最新の一意のトリプレットのみの日付とステータス情報が必要です。あなたが助けるためにあなたが私から見る必要があることを私に知らせてください. これが現在の非常に素朴なステートメントです。

    SELECT
        TransmissionSend.CreateTimestamp,
        TransmissionSendItem.Status,
        TransmissionSendItem.PhysicianId,
        TransmissionSendItem.DocumentIdDisplay,
        Utility.SqlFunctions_NdnListToAccountList(TransmissionSendItem.NdocNum) AS AccountNum
    FROM
        Interface_SFAX.TransmissionSend,
        Interface_SFAX.TransmissionSendItem
    WHERE
        TransmissionSend.ID = TransmissionSendItem.childsub --I don't know exactly what this does, I did not write this script. It must stay here though for the exact results.

    ORDER BY TransmissionSend.CreateTimestamp DESC -- In the end, each latest result of the unique triplet will be ordered from most recent to oldest in return

私の質問は、医師 ID、ドキュメント ID、およびアカウント番号の組み合わせごとに結果を最新のステータスのみに制限するにはどうすればよいですか?

4

1 に答える 1

4

最初にdocumentidGROUPBY documentidでMAX(date)を選択し、次に最初の選択結果(たとえば、内部結合)によってテーブルからすべてのデータを選択します。

SELECT table.additionalData, J.id, J.date
FROM table
INNER JOIN (SELECT id, MAX(date) AS date 
            FROM table GROUP BY id) AS J 
ON J.id = table.id 
AND J.date /* this is the max date */ = table.date
于 2012-08-10T15:26:48.047 に答える