SQLの条件に基づいて、2つの異なるフィールドのデータを含むフィールドを作成します

corbfon

セットアップ:

私のデータベースには、操作する必要のある3つのテーブルがあります。最初の2つとPartList呼び出しましょうPartHistPartListマシンに搭載されているすべての部品番号が含まれています(このフィールドをこのフィールドと呼びますExpectedPart)。PartHistマシン上にあることが確認されているすべてのコンポーネントが含まれています(VerifiedPart)。両方のテーブルには、MachineID特定の物理マシンを参照するフィールドが含まれています。

これまでのところ、私のクエリは次のようになります。

SELECT
    ExpectedPart,
    VerifiedPart
FROM
    PartList List
    LEFT OUTER JOIN PartHist Hist
ON
    List.MachineID = Hist.MachineID
    AND List.ExpectedPart = Hist.VerifiedPart
Where
    List.MachineID = 'SomeID'

問題:

これまでのところ、の値VerifiedPartNULLその部分が検証されるまでであるため、このクエリは、どのコンポーネントがまだ検証されていないかを判断するのに非常にうまく機能します。パーツ番号がにある特定のパーツを除いて、PartListその検証は別のテーブルに保存されます(私のせいではありません)。したがって、検証された後でも、クエリはNULLこの部分を返します

この3番目のテーブルは、これをSpecialCase、hasMachineIDおよびVerifiedPartSPfieldsと呼びます。PartHistパーツがこの特殊なケースのパーツのインスタンスである場合は「Y」を含み、そうでない場合は「N」を含むフィールドもテーブルにあります。このフィールドはと呼ばれSpYesNoます。

質問:検証されたすべてのパーツを含む単一のフィールドをクエリに作成できますか?どういうわけか、条件を使用する方法があるのではないかと思いました...

IF (PartHist.SpYesNo = 'Y') THEN use SpecialCase.VerifiedPartSP as VerifiedPart

IBMDB2データベースを使用しています

JNevill

2つの「検証済み」パーツテーブルを結合して、結合することができます。

SELECT
    ExpectedPart,
    VerifiedPart
FROM
    PartList List
    LEFT OUTER JOIN 
        ( 
            SELECT machineid, verifiedpart FROM PartHist 
            UNION
            SELECT machineid, verifiedpartsp FROM SpecialCase
        )Hist
ON
    List.MachineID = Hist.MachineID
    AND List.ExpectedPart = Hist.VerifiedPart
Where
    List.MachineID = 'SomeID'

LEFT OUTER JOINこれらのテーブルの両方にアクセスし、CASEステートメントを使用していずれかのフィールドをチェックすることもできますが、このアプローチは要件によりよく適合し、より高速に実行されると思います。


これは、何が何であるかを理解するためのJOINステートメントとCASEステートメントを含むバージョンです。

SELECT
    ExpectedPart,
    CASE WHEN PartHist.SPYesNo = 'Y' THEN SpecialCase.VerifiedPartSP ELSE partHistVerifiedPart END as VerifiedPart
FROM
    PartList List
    LEFT OUTER JOIN PartHist ON 
        List.MachineID = PartHist.MachineID AND 
        List.ExpectedPart =         PartHist.VerifiedPart
    LEFT OUTER JOIN SpecialCase ON 
        List.MachineID = SpecialCase.MachineID AND 
        List.ExpectedPart = SpecialCase.VerifiedPart 

Where
    List.MachineID = 'SomeID'

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

SQLは、異なるフィールドに基づいて複数の行フィールドを1つのレコードに結合します

分類Dev

2つの基準条件に基づいて、一意のIDごとに異なる値の複数のCOUNTフィールドを返します

分類Dev

AS400 SQLの異なる基準に基づいて、SQLの同じフィールドを更新します

分類Dev

Mysql-3つの異なるフィールドとの結合に基づいて1つの列にデータを入力します

分類Dev

グループは、別のフィールドの2つの同じデータに基づいてフィールドを連結します

分類Dev

Accessの異なるテーブルの他の2つのフィールドの値に基づいてマスターテーブルを更新する

分類Dev

rethinkdb-親のフィールドに基づいて配列を含む新しいフィールドを作成します

分類Dev

SQL:2つのフィールドに基づいて、テーブルBに存在しないレコードをテーブルAから削除します

分類Dev

別のフィールドタイプに基づいて、条件付きでフィールドのタイプを作成します

分類Dev

複数の行条件に基づいて2つの異なるデータフレームを比較します

分類Dev

条件に基づいて2つのフィールドでフィルターを検索

分類Dev

フィールド値に基づいて2つの異なる列に出力

分類Dev

関連性の重みが異なる2つのフィールドに基づいてレコードをどのように並べ替えますか?

分類Dev

関連するモデルのフィールドに基づいてActiveRecordクエリを作成します

分類Dev

Tableauの行の2つの条件に基づいてデータをフィルタリングする方法

分類Dev

SQL:2つのフィールドの値に基づいて発生をカウントします

分類Dev

複数の条件に基づいてフィールドを更新します

分類Dev

フィルタに基づいて数量の結果を表示し、フィルタリングオプションがない場合は、2つの異なる列をマージするSQLを作成するにはどうすればよいですか?

分類Dev

JavaScriptを使用して2つの変数に基づいてカードをフィルタリングする

分類Dev

同じフィールドから異なるデータを含む2つの列を選択するにはどうすればよいですか

分類Dev

SQLデータベースのフィールドの値に基づいてボタンを表示する

分類Dev

別のテーブルに基づいて無効なフィールド値を持つデータをフィルタリングする

分類Dev

Yii2のフィールドに基づいてデータを取得します

分類Dev

別のフィールドの条件に基づいてSharePointのフィールドを非表示にする

分類Dev

javascriptを使用してhtmlの他のフィールドの値に基づいてフォームフィールドにデータを入力する方法

分類Dev

Python Pandasは、複数の値フィールドに基づいて2つのデータフレームをマージします

分類Dev

postgresqlデータベースからすべてのフィールドを含むデータを抽出し、djangoのいくつかの新しいフィールドを使用して新しいモデルを作成します

分類Dev

2つのフィールドに基づいて小計フィールドを作成する必要があります

分類Dev

SQLのフィールド値に基づいてフィールドを乗算します

Related 関連記事

  1. 1

    SQLは、異なるフィールドに基づいて複数の行フィールドを1つのレコードに結合します

  2. 2

    2つの基準条件に基づいて、一意のIDごとに異なる値の複数のCOUNTフィールドを返します

  3. 3

    AS400 SQLの異なる基準に基づいて、SQLの同じフィールドを更新します

  4. 4

    Mysql-3つの異なるフィールドとの結合に基づいて1つの列にデータを入力します

  5. 5

    グループは、別のフィールドの2つの同じデータに基づいてフィールドを連結します

  6. 6

    Accessの異なるテーブルの他の2つのフィールドの値に基づいてマスターテーブルを更新する

  7. 7

    rethinkdb-親のフィールドに基づいて配列を含む新しいフィールドを作成します

  8. 8

    SQL:2つのフィールドに基づいて、テーブルBに存在しないレコードをテーブルAから削除します

  9. 9

    別のフィールドタイプに基づいて、条件付きでフィールドのタイプを作成します

  10. 10

    複数の行条件に基づいて2つの異なるデータフレームを比較します

  11. 11

    条件に基づいて2つのフィールドでフィルターを検索

  12. 12

    フィールド値に基づいて2つの異なる列に出力

  13. 13

    関連性の重みが異なる2つのフィールドに基づいてレコードをどのように並べ替えますか?

  14. 14

    関連するモデルのフィールドに基づいてActiveRecordクエリを作成します

  15. 15

    Tableauの行の2つの条件に基づいてデータをフィルタリングする方法

  16. 16

    SQL:2つのフィールドの値に基づいて発生をカウントします

  17. 17

    複数の条件に基づいてフィールドを更新します

  18. 18

    フィルタに基づいて数量の結果を表示し、フィルタリングオプションがない場合は、2つの異なる列をマージするSQLを作成するにはどうすればよいですか?

  19. 19

    JavaScriptを使用して2つの変数に基づいてカードをフィルタリングする

  20. 20

    同じフィールドから異なるデータを含む2つの列を選択するにはどうすればよいですか

  21. 21

    SQLデータベースのフィールドの値に基づいてボタンを表示する

  22. 22

    別のテーブルに基づいて無効なフィールド値を持つデータをフィルタリングする

  23. 23

    Yii2のフィールドに基づいてデータを取得します

  24. 24

    別のフィールドの条件に基づいてSharePointのフィールドを非表示にする

  25. 25

    javascriptを使用してhtmlの他のフィールドの値に基づいてフォームフィールドにデータを入力する方法

  26. 26

    Python Pandasは、複数の値フィールドに基づいて2つのデータフレームをマージします

  27. 27

    postgresqlデータベースからすべてのフィールドを含むデータを抽出し、djangoのいくつかの新しいフィールドを使用して新しいモデルを作成します

  28. 28

    2つのフィールドに基づいて小計フィールドを作成する必要があります

  29. 29

    SQLのフィールド値に基づいてフィールドを乗算します

ホットタグ

アーカイブ