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

日付と前後の日付のリストを重複なしで取得するSQL

    これでうまくいくはずです:

    SELECT MyDate, min(DateType) as DateType
    FROM (
        SELECT mydate - 1 AS MyDate, 2 AS DateType
        FROM myTable
        WHERE myTable.fkId = @MyFkId;
    
        UNION
    
        SELECT mydate + 1 AS MyDate, 2 AS DateType
        FROM myTable
        WHERE myTable.fkId = @MyFkId;
    
        UNION ALL
    
        SELECT mydate AS MyDate, 1 AS DateType
        FROM myTable
        WHERE myTable.fkId = @MyFkId;
    ) AS myCombinedDateTable
    group by MyDate
    

    注:2 番目の UNION を変更しました UNION ALL に より良いパフォーマンスのために; DateType であるため、最後のサブクエリが最初の 2 つのサブクエリと重複することはありません。 最初の 2 つは常に 2 で、最後の UNION は 1 です。 ed クエリ。



    1. データベース+Windows認証+ユーザー名/パスワード?

    2. Oracleを学び、日付に基づいてブール値を設定する

    3. sql::SQLStringの動作

    4. Sqlite特定の位置でテーブルに列を追加(Android)