sql >> Databáze >  >> RDS >> Sqlserver

Dva dotazy v jedné výsledkové tabulce?

Ke sloučení dvou dotazů do jedné tabulky potřebujete UNION úkon. To vyžaduje dvě sady výsledků a v podstatě je slepí dohromady.
Union má několik omezení a nejdůležitější je, že je nutné, aby dotazy měly stejný počet sloupců.

Ve vašich dotazech máte vybraný jiný počet sloupců, credit_card_master každý dotaz má 5 sloupců a PG_NetBanking_Charges každý dotaz má 4 sloupce.

Z toho, co vidím, předpokládám, že card_type sloupec z prvního dotazu nemá ekvivalent ve druhém dotazu, takže druhý dotaz můžete přepsat jako:

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 ...

Všimněte si také, že sloupce v sadě výsledků převezmou názvy sloupců z prvního dotazu, takže možná budete chtít přidat alias sloupce, abyste získali smysluplnější / obecnější název sloupce. Obvykle také přidávám sloupec "Zdroj", který mi umožňuje sledovat původ řádku ve sjednocení, takže můj konečný dotaz bude vypadat takto:

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 ...

a výsledek bude mít sloupce Source , Name , Type , Ammount , AmmountType a PG_Type , kde Source bude 1 pro řádky z prvního a 2 pro řádky z druhého dotazu.




  1. Extrahujte znaky napravo od hodnoty s oddělovači v příkazu SELECT

  2. Jak mohu odkazovat na pojmenované parametry ve funkcích Postgres SQL?

  3. PHP MySQL Vyberte ID z jedné tabulky a informace z jiné tabulky

  4. Nodejs s sequelize nemohl po spuštění serveru vytvořit tabulku v mysql workbench