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

SQL Server:Jak používat UNION se dvěma dotazy, které OBA mají klauzuli WHERE?

Měli byste být schopni je přiřadit a použít jako poddotazy (částem důvodu, proč byl váš první pokus neplatný, bylo to, že první výběr měl dva sloupce (ID a ReceivedDate), ale váš druhý měl pouze jeden (ID) – také typ je vyhrazený word v SQL Server a nelze jej použít, jak jste jej měli jako název sloupce):

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. 3 způsoby, jak odstranit duplicitní řádky na serveru SQL při ignorování primárního klíče

  2. SQLite Tutorial:Vše, co potřebujete vědět

  3. Vkládání dat pro záznam do sqlite

  4. Pochopení příkazů PIVOT, UNPIVOT a Reverse PIVOT