sql >> データベース >  >> RDS >> Sqlserver

SQL Server:両方にWHERE句がある2つのクエリでUNIONを使用するにはどうすればよいですか?

    それらにエイリアスを付けてサブクエリとして使用できるはずです(最初の選択が無効だった理由の一部は、最初の選択に2つの列(IDとReceivedDate)があったが、2番目の選択には1つ(ID)しかなかったためです-また、Typeは予約済みですSQL Serverの単語であり、列名として使用したため使用できません):

    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. MariaDBでのLTRIM()のしくみ

    2. ルーム永続ライブラリを使用してパラメータで更新

    3. SQLServerデータベースで主キー制約の有無にかかわらずすべてのテーブルを取得する方法-SQLServer/TSQLチュートリアル59

    4. MicrosoftT-SQLからOracleSQLへの変換