sql >> Database teknologi >  >> RDS >> Sqlserver

To forespørgsler i enkelt resultattabel?

For at kombinere to forespørgsler i én tabel skal du bruge UNION operation. Det kræver to resultatsæt og limer dem grundlæggende sammen.
Union har få begrænsninger, og det vigtigste er, at det er nødvendigt, at forespørgslerne har det samme antal kolonner.

I dine forespørgsler har du valgt forskelligt antal kolonner, credit_card_master forespørgsler har hver 5 kolonner og PG_NetBanking_Charges forespørgsler har 4 kolonner hver.

Ud fra hvad jeg kan se, gætter jeg på, at card_type kolonne fra den første forespørgsel har ingen ækvivalent i den anden forespørgsel, så du kan omskrive den anden forespørgsel som:

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

Bemærk også, at kolonnerne i resultatsættet vil tage navnene på kolonnerne fra den første forespørgsel, så du vil måske tilføje et kolonnealias for at få et mere meningsfuldt/generisk navn til kolonnen. Jeg tilføjer normalt også en "Kilde"-kolonne, der gør det muligt for mig at spore oprindelsen af ​​rækken i foreningen, så min endelige forespørgsel ser sådan ud:

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

og resultatet vil have kolonnerne Source , Name , Type , Ammount , AmmountType og PG_Type , hvor Source vil være 1 for rækker fra den første og 2 for rækker fra den anden forespørgsel.




  1. SQL:valg af rækker, hvor kolonneværdien er ændret fra forrige række

  2. Godkendelse med offentlige nøgler og cx_Oracle ved hjælp af Python

  3. 900 byte indeksstørrelsesgrænse i tegnlængde

  4. Indekseringsydelse BigInt vs VarChar