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

SQL Server:Hvordan bruger man UNION med to forespørgsler, der BEGGE har en WHERE-klausul?

Du burde være i stand til at kalde dem og bruge dem som underforespørgsler (en del af grunden til, at din første indsats var ugyldig, var fordi den første udvælgelse havde to kolonner (ID og ReceivedDate), men din anden havde kun én (ID) - også Type er en reserveret ord i SQL Server, og kan ikke bruges som du havde det som kolonnenavn):

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. Hvordan får jeg kolonnedatatype i Oracle med PL-SQL med lave privilegier?

  2. Nested Loop Join in Oracle 11g

  3. Plsql for at stave nummer (valuta) til italiensk valuta uden hardkodet oversættelsesnummer

  4. DBA's rolle i NoSQL