Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server:Bagaimana cara menggunakan UNION dengan dua kueri yang KEDUAnya memiliki klausa WHERE?

Anda harus dapat membuat alias mereka dan menggunakannya sebagai subkueri (sebagian dari alasan upaya pertama Anda tidak valid adalah karena pilihan pertama memiliki dua kolom (ID dan Tanggal Diterima) tetapi kolom kedua Anda hanya memiliki satu (ID) - juga, Jenis dicadangkan Word di SQL Server, dan tidak dapat digunakan seperti yang Anda miliki sebagai nama kolom):

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. Konversi baris ke kolom secara efisien di server sql

  2. Mengapa CTE lebih baik daripada kursor/tabel turunan/subqueries/tabel temp dll?

  3. Pesan Dengan menggunakan parameter untuk nama kolom

  4. Pemulihan Database yang Dipercepat di SQL Server 2019

  5. Mengapa server SQL melempar kesalahan ini:Tidak dapat memasukkan nilai NULL ke dalam kolom 'id'?