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

SQL を使用して、指定した日付または最も近い日付 <指定した日付の値を返すにはどうすればよいですか?

    次のようなことを試すことができます:

    SELECT date, grp, id
        , (SELECT TOP 1 price
           FROM price_table P2
           WHERE P1.id = P2.id
           AND P1.grp = P2.grp
           AND P2.date <= P1.date
           ORDER BY P2.date DESC)
    FROM price_table P1
    WHERE P1.date IN ('12/31/2009', '11/30/2009')
    AND P1.grp IN ('Group1')
    

    編集 各月、グループ、および ID の最後のレコードを取得するには、次を試してください:

    SELECT date, grp, id, price
    FROM price_table P1
    WHERE P1.date = (SELECT MAX(date)
                     FROM price_table P2
                     WHERE P1.grp = P2.grp
                     AND P1.id = P2.id
                     AND YEAR(P1.date) = YEAR(P2.date)
                     AND MONTH(P1.date) = MONTH(P2.date))
    AND P1.grp In ('Group1')
    


    1. PostgreSQLのカウントクエリの最適化

    2. メッセージ 203、レベル 16、状態 2 は有効な識別子ではありません

    3. ホット再デプロイとOracleデータベースによるPermgenメモリリーク

    4. Oracle APEX v4.2.2 でのオンザスポット検証の目的で Ajax を介して Oracle 関数を呼び出す