sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server:Hur använder man UNION med två frågor som BÅDA har en WHERE-klausul?

Du bör kunna alias dem och använda dem som underfrågor (en del av anledningen till att din första ansträngning var ogiltig var att den första valen hade två kolumner (ID och ReceivedDate) men din andra hade bara en (ID) - dessutom är Type en reserverad ord i SQL Server, och kan inte användas eftersom du hade det som kolumnnamn):

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. Använda PgBouncer Connection Pooler för PostgreSQL med ClusterControl 1.8.2

  2. hur gör man anslutningspooling i java?

  3. Cloud Backup-alternativ för PostgreSQL

  4. Dåliga vanor:Undviker NULL i SQL Server