sql >> データベース >  >> RDS >> Sqlserver

単一の結果テーブルに 2 つのクエリ?

    2 つのクエリを 1 つのテーブルにまとめるには、UNION が必要です。 手術。これは 2 つの結果セットを取り、基本的にそれらを結合します。
    Union にはいくつかの制限があり、最も重要なことは、クエリの列数が同じである必要があるということです。

    あなたのクエリでは、異なる数の列が選択されています. credit_card_master クエリにはそれぞれ 5 つの列があり、PG_NetBanking_Charges クエリにはそれぞれ 4 つの列があります。

    私が見る限り、card_type は 最初のクエリの列は 2 番目のクエリに相当するものがないため、2 番目のクエリを次のように書き換えることができます:

    SELECT card_name, card_type, charge_amount, B2C_Amount_type, PGM.PG_Type 
      FROM ...
      WHERE ...
    UNION
    SELECT PGM.Payment_Gateway_Name, null, PGNBC.Online_DC_Charge_Amt,
           PGNBC.Online_DC_Charge_type, PGM.PG_Type
      FROM ...
      WHERE ...
    

    また、結果セットの列は最初のクエリから列の名前を取得するため、列のエイリアスを追加して、列のより意味のある一般的な名前を取得することもできます。また、通常、ユニオン内の行の起源を追跡できるようにする「ソース」列を追加するため、最終的なクエリは次のようになります。

    SELECT 1 as Source, card_name as Name, card_type as Type, 
           charge_amount as Ammount, B2C_Amount_type as AmmountType,
           PGM.PG_Type as PG_Type
      FROM ...
      WHERE ...
    UNION
    SELECT 2, PGM.Payment_Gateway_Name, null, PGNBC.Online_DC_Charge_Amt,
           PGNBC.Online_DC_Charge_type, PGM.PG_Type
      FROM ...
      WHERE ...
    

    結果には列 Source が含まれます 、 NameTypeAmmountAmmountType および PG_Type 、ここで Source 最初のクエリの行では 1、2 番目のクエリの行では 2 になります。




    1. SQLでテーブルの行数をカウントする方法

    2. 常に暗号化されるSQLServerについて

    3. MySQLデータベースから作成されたオブジェクトをキャッシュする方法

    4. ビルドバージョンを保存するSQLデータ型