sql >> Database >  >> RDS >> Sqlserver

SQL Server:hoe UNION gebruiken met twee queries die BEIDE een WHERE-clausule hebben?

Je zou ze moeten kunnen aliassen en gebruiken als subquery's (een deel van de reden waarom je eerste poging ongeldig was, was omdat de eerste selectie twee kolommen had (ID en ReceivedDate) maar je tweede had er maar één (ID) - ook is Type een gereserveerde woord in SQL Server, en kan niet worden gebruikt zoals u het als kolomnaam had):

declare @Tbl1 table(ID int, ReceivedDate datetime, ItemType Varchar(10))
declare @Tbl2 table(ID int, ReceivedDate datetime, ItemType Varchar(10))

insert into @Tbl1 values(1, '20010101', 'Type_1')
insert into @Tbl1 values(2, '20010102', 'Type_1')
insert into @Tbl1 values(3, '20010103', 'Type_3')

insert into @Tbl2 values(10, '20010101', 'Type_2')
insert into @Tbl2 values(20, '20010102', 'Type_3')
insert into @Tbl2 values(30, '20010103', 'Type_2')

SELECT a.ID, a.ReceivedDate FROM
 (select top 2 t1.ID, t1.ReceivedDate
  from @tbl1 t1
  where t1.ItemType = 'TYPE_1'
  order by ReceivedDate desc
 ) a
union
SELECT b.ID, b.ReceivedDate FROM
 (select top 2 t2.ID, t2.ReceivedDate
  from @tbl2 t2
  where t2.ItemType = 'TYPE_2'
  order by t2.ReceivedDate desc
 ) b


  1. PGLogical 1.1-pakketten voor PostgreSQL 9.6beta1

  2. SSL voor PostgreSQL-verbindingsknooppunten

  3. Ontbrekende indexen in MS SQL of optimalisatie in een mum van tijd

  4. Laat je niet voor de gek houden door de streams pool