Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server:Jak używać UNION z dwoma zapytaniami, które OBA mają klauzulę WHERE?

Powinieneś być w stanie przypisywać im aliasy i używać ich jako podzapytań (część powodu, dla którego twoja pierwsza próba była nieprawidłowa, była taka, że ​​pierwsza selekcja miała dwie kolumny (ID i ReceivedDate), ale druga miała tylko jedną (ID) - również typ jest zarezerwowany słowo w SQL Server i nie może być używane jako nazwa kolumny):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można znaleźć procedury składowanej „dbo.aspnet_CheckSchemaVersion”

  2. SQL Server 2016:Przywracanie bazy danych

  3. Uzyskaj 1 górny wiersz z każdej grupy

  4. Przykłady ATAN() w SQL Server

  5. Obrót wielu kolumn w T-SQL