テーブル内の他の条件に基づいてレコードをクエリします(レコードの選択)

ジョシュア・ダイター

基本的に、ストアドプロシージャには、患者ID、ケアプロバイダーID、表示回数、取得日、表示日、および医師が正しいkcodeを取得したかどうかを示す空の列を含むテーブルがあります。医師は、患者を最も頻繁に診察したことがある場合、患者のkcodeを取得します。その医師と別の医師が同じ回数彼らに会った場合、それは選択する最も早い日付に依存します。

各患者のkcodeを取得した医師と一緒に、行の横に1を挿入するクエリを作成するにはどうすればよいですか?以下は、ストアドプロシージャからテーブルをクエリしたときに得られる結果の写真です。

これは、クエリを使用したときの結果です。

SELECT DISTINCT allCodes.PTNT_ID, allCodes.CP_ID FROM tmp_kcodes allCodes
JOIN BILL b ON b.PTNT_ID = allCodes.PTNT_ID
WHERE b.STS_CD = 'P'
ORDER BY PTNT_ID;

請求書テーブルの「P」は、支払われた請求書を探しているだけです。

ここに画像の説明を入力してください

ロブ・ヘシェ

これは少し注意が必要ですが、sprocからselectにいくつかの派生テーブルを書き込むと、2つの不一致基準を特定できるはずです。1)kcodeを取得しなかったcpの場合、表示回数が多い2)表示回数は等しくて最も早い日付は<割り当てられたcpの最も早い日付です。

select
    ptnt_id
    --Assigned CP values
    , assigned_cp
    , assigned_times_seen
    , assigned_got_kcode
    , assigned_earliest_date_seen
    --Unassigned CP values
    , unassigned_cp
    , unassigned_times_seen
    , unassigned_got_kcode
    , unassigned_earliest_date_seen
    , case 
        when (times_seen_mismatch = 1 or earliest_date_mismatch = 1)
        then 0
        else 1
    end as correct_kcode
from
    (
        select
            ptnt_id
            , kcode_assigned.cp_id as assigned_cp
            , kcode_zero.cp_id as unassigned_cp
            --case to determine where times_seen of assigned cp 
            --is less than that of an unassigned cp
            , case
                when kcode_zero.times_seen > kcode_assigned.times_seen
                then 1
                else 0
            end as times_seen_mismatch
            --case to determine where times_seen of assigned cp 
            --equals times_seen of unassigned cp and the unassigned cp
            --saw the patient on an earlier date than the assigne cp
            , case
                when kcode_zero.times_seen = kcode_assigned.times_seen
                    and kcode_zero.earliest_date_seen < kcode_assigned.earliest_date_seen
                then 1
                else 0
            end as earliest_date_mismatch
            --Assigned CP fields
            , kcode_assigned.times_seen as assigned_times_seen
            , kcode_assigned.got_kcode as assigned_got_kcode
            , kcode_assigned.earliest_date_seen as assigned_earliest_date_seen
            --Unassigned CP fields
            , kcode_zero.times_seen as unassigned_times_seen
            , kcode_zero.got_kcode as unassigned_got_kcode
            , kcode_zero.earliest_date_seen as unassigned_earliest_date_seen
        from
            --derived table to return only those 
            --records where kcode assigned
            (
                select
                    ptnt_id
                    , cp_id
                    , times_seen
                    , got_kcode
                    , earliest_date_seen
                from
                    [your table]
                where
                    got_kcode > 0
            ) kcode_assigned
            left outer join
                --derived table to return only those
                --records where kcode was not assigned
                (
                    select
                        ptnt_id
                        , cp_id
                        , times_seen
                        , got_kcode
                        , earliest_date_seen
                    from
                        [your table]
                    where
                        got_kcode = 0
                ) kcode_zero
                    on kcode_assigne.ptnt_id = kcode_zero.ptnt_id
    ) validate
where
    1=1
    and (times_seen_mismatch = 1 or earliest_date_mismatch = 1)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ユーザーテーブルに基づいて月の最後のレコードを選択します

分類Dev

条件に基づいて別のテーブルから特定のレコードを選択する

分類Dev

同じテーブル内の他のレコードに基づいてレコードを更新する

分類Dev

ベースレコードの日付に基づいて同じテーブルからレコードを選択するサブクエリを回避します

分類Dev

外部テーブルの最後のエントリに基づいてレコードを挿入します

分類Dev

Javaは、他のテーブルのレコードに基づいて、テーブルのレコードを表示します

分類Dev

CTEクエリで、最初に取得したテーブルIDに基づいて別のテーブルのレコードをカウントします

分類Dev

他のテーブルの条件に基づいてテーブルのクエリを選択しますか?外部キーなし

分類Dev

別の列の条件に基づいて最大レコードを選択する

分類Dev

SQL Server:別のテーブルにリンクされていないレコードを選択します

分類Dev

条件に基づいて1つのテーブルから別のテーブルにレコードを挿入するPSQLクエリ

分類Dev

クエリ結果のレコードに基づいて、複数選択リストボックスで値を事前に選択します

分類Dev

別のテーブルのレコードに基づいてテーブルにレコードを挿入するMySQLクエリ

分類Dev

Group By "Having"に基づいて単一のレコードを選択します

分類Dev

選択クエリの結果に基づいてデータベース レコードを更新する

分類Dev

他の列の状態に基づいてレコードを選択します

分類Dev

SQL-複数の条件に基づいて最新のレコードを選択します

分類Dev

2つの条件に基づいて最新のレコードを選択します

分類Dev

2つの条件に基づいて単一の列からレコードを選択します

分類Dev

EF。最初のテーブルのFKを持つ2番目のテーブルのレコードのプロパティに基づいて、1つのテーブルからレコードを選択します

分類Dev

同じテーブルの列値に基づいて、テーブルからレコードを選択します

分類Dev

SQL - レコード内のブール値に基づいてクエリ出力を変更する

分類Dev

クエリを実行して、現在の年に基づいて2つの日付の間のレコードを選択します

分類Dev

別のテーブルに基づいてテーブルから選択するレコード数Oracle

分類Dev

複数のテーブル選択に基づいてレコードを削除するSQL

分類Dev

サブクエリを使用して他のレコードを選択する

分類Dev

あるテーブルのレコードを他のテーブルのレコードに基づいてフィルタリングする

分類Dev

「接続テーブル」をクエリして、選択した複数のレコードを抽出します

分類Dev

Oracleの他のテーブルの条件付きクエリに基づいて行を選択する

Related 関連記事

  1. 1

    ユーザーテーブルに基づいて月の最後のレコードを選択します

  2. 2

    条件に基づいて別のテーブルから特定のレコードを選択する

  3. 3

    同じテーブル内の他のレコードに基づいてレコードを更新する

  4. 4

    ベースレコードの日付に基づいて同じテーブルからレコードを選択するサブクエリを回避します

  5. 5

    外部テーブルの最後のエントリに基づいてレコードを挿入します

  6. 6

    Javaは、他のテーブルのレコードに基づいて、テーブルのレコードを表示します

  7. 7

    CTEクエリで、最初に取得したテーブルIDに基づいて別のテーブルのレコードをカウントします

  8. 8

    他のテーブルの条件に基づいてテーブルのクエリを選択しますか?外部キーなし

  9. 9

    別の列の条件に基づいて最大レコードを選択する

  10. 10

    SQL Server:別のテーブルにリンクされていないレコードを選択します

  11. 11

    条件に基づいて1つのテーブルから別のテーブルにレコードを挿入するPSQLクエリ

  12. 12

    クエリ結果のレコードに基づいて、複数選択リストボックスで値を事前に選択します

  13. 13

    別のテーブルのレコードに基づいてテーブルにレコードを挿入するMySQLクエリ

  14. 14

    Group By "Having"に基づいて単一のレコードを選択します

  15. 15

    選択クエリの結果に基づいてデータベース レコードを更新する

  16. 16

    他の列の状態に基づいてレコードを選択します

  17. 17

    SQL-複数の条件に基づいて最新のレコードを選択します

  18. 18

    2つの条件に基づいて最新のレコードを選択します

  19. 19

    2つの条件に基づいて単一の列からレコードを選択します

  20. 20

    EF。最初のテーブルのFKを持つ2番目のテーブルのレコードのプロパティに基づいて、1つのテーブルからレコードを選択します

  21. 21

    同じテーブルの列値に基づいて、テーブルからレコードを選択します

  22. 22

    SQL - レコード内のブール値に基づいてクエリ出力を変更する

  23. 23

    クエリを実行して、現在の年に基づいて2つの日付の間のレコードを選択します

  24. 24

    別のテーブルに基づいてテーブルから選択するレコード数Oracle

  25. 25

    複数のテーブル選択に基づいてレコードを削除するSQL

  26. 26

    サブクエリを使用して他のレコードを選択する

  27. 27

    あるテーブルのレコードを他のテーブルのレコードに基づいてフィルタリングする

  28. 28

    「接続テーブル」をクエリして、選択した複数のレコードを抽出します

  29. 29

    Oracleの他のテーブルの条件付きクエリに基づいて行を選択する

ホットタグ

アーカイブ