SQLServerで2つの日付の間のすべての日付を取得します

user3193557

2つの日付の間のすべての日付を取得するにはどうすればよいですか?

@MAXDATEテーブルの最大日付を格納している変数があります。ここで@MaxdateGETDATE()との間のすべての日付を取得し、これらの日付をカーソルに格納したいと思います。

これまでのところ、私は次のようにしています。

;with GetDates As  
(  
    select DATEADD(day,1,@maxDate) as TheDate
    UNION ALL  
    select DATEADD(day,1, TheDate) from GetDates  
    where TheDate < GETDATE()  
)  

これは完全に機能していますが、これらの値をカーソルに保存しようとすると

SET @DateCurSor = CURSOR FOR
                SELECT TheDate
                FROM GetDates

コンパイルエラー

キーワード「SET」の近くの構文が正しくありません。

これを解決する方法は?

GarethD

私の最初の提案は、カレンダーテーブルを使用することです。カレンダーテーブルがない場合は、作成します。それらは非常に便利です。クエリは次のように簡単です。

DECLARE @MinDate DATE = '20140101',
        @MaxDate DATE = '20140106';

SELECT  Date
FROM    dbo.Calendar
WHERE   Date >= @MinDate
AND     Date < @MaxDate;

カレンダーテーブルを作成したくない場合、または作成できない場合でも、再帰CTEなしでオンザフライでこれを行うことができます。

DECLARE @MinDate DATE = '20140101',
        @MaxDate DATE = '20140106';

SELECT  TOP (DATEDIFF(DAY, @MinDate, @MaxDate) + 1)
        Date = DATEADD(DAY, ROW_NUMBER() OVER(ORDER BY a.object_id) - 1, @MinDate)
FROM    sys.all_objects a
        CROSS JOIN sys.all_objects b;

これについてさらに読むには、以下を参照してください。

この一連の日付をカーソルで使用することに関しては、別の方法を見つけることを強くお勧めします。通常、はるかに優れたパフォーマンスを発揮するセットベースの代替手段があります。

だからあなたのデータで:

  date   | it_cd | qty 
24-04-14 |  i-1  | 10 
26-04-14 |  i-1  | 20

2014年4月28日の数量を取得するには(私が収集するのはあなたの要件です)、実際には上記のいずれも必要ありません。単に次を使用できます。

SELECT  TOP 1 date, it_cd, qty 
FROM    T
WHERE   it_cd = 'i-1'
AND     Date <= '20140428'
ORDER BY Date DESC;

特定のアイテムに使用したくない場合:

SELECT  date, it_cd, qty 
FROM    (   SELECT  date, 
                    it_cd, 
                    qty, 
                    RowNumber = ROW_NUMBER() OVER(PARTITION BY ic_id 
                                                    ORDER BY date DESC)
            FROM    T
            WHERE   Date  <= '20140428'
        ) T
WHERE   RowNumber = 1;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SparkDataFrameで2つの日付の間のすべての日付を取得します

分類Dev

C#で年の日と2つの日付の間のすべての時間を取得します

分類Dev

2つの日付の間のcron式を使用して将来のすべての日付を取得します

分類Dev

SQLite:日付間のすべての日付を取得します

分類Dev

JavaScriptで任意の2つの日付の間のすべての日付を取得する必要があります

分類Dev

JavaScript:2つの日付の間のすべての月を取得しますか?

分類Dev

Pythonで2つの日付の間の週末を除くすべての日付を取得したい

分類Dev

SQLServerは2つの日付の間の行に日付を生成します

分類Dev

2つの日付の間の月、年の形式ですべての四半期を取得します

分類Dev

datepickersとEntityFramework6を使用して2つの日付の間のすべての日付を取得する

分類Dev

指定された日付の間のすべての日付を取得します

分類Dev

Excelは2つの日付の間で値を取得します

分類Dev

Excelは2つの日付の間で値を取得します

分類Dev

SparkScalaの新しい行の2つの日付の間のすべての日付(週)を追加します

分類Dev

2つの日付の間の日付の配列を取得します

分類Dev

2つの日付の間のすべての日付の配列またはリストを作成します

分類Dev

他の2つの日付の間の日付を補間して、値を取得します

分類Dev

PHP:配列内の2つの日付の間のすべての日付を返します

分類Dev

表の2つの日付列の間のすべての日付を選択します

分類Dev

2つの日付の間のランダムな日時ですべての行を更新します

分類Dev

2つの日付の間の日付を選択します

分類Dev

2つの日付の間に毎週月曜日の日付を取得します

分類Dev

すべての行の2つの日付の差を取得します

分類Dev

PrestoDB:2つの日付の間のすべての日付を選択します

分類Dev

2つの日付の間のすべての時間を取得する方法

分類Dev

LINQを使用して、2つの日付の間の日付の発生数を取得します

分類Dev

Javacriptは、2つの日付の間の日数を取得します。

分類Dev

SQLite:2つの日付の間の平均平日を取得します

分類Dev

2つの日付の間のすべての日付を生成する方法

Related 関連記事

  1. 1

    SparkDataFrameで2つの日付の間のすべての日付を取得します

  2. 2

    C#で年の日と2つの日付の間のすべての時間を取得します

  3. 3

    2つの日付の間のcron式を使用して将来のすべての日付を取得します

  4. 4

    SQLite:日付間のすべての日付を取得します

  5. 5

    JavaScriptで任意の2つの日付の間のすべての日付を取得する必要があります

  6. 6

    JavaScript:2つの日付の間のすべての月を取得しますか?

  7. 7

    Pythonで2つの日付の間の週末を除くすべての日付を取得したい

  8. 8

    SQLServerは2つの日付の間の行に日付を生成します

  9. 9

    2つの日付の間の月、年の形式ですべての四半期を取得します

  10. 10

    datepickersとEntityFramework6を使用して2つの日付の間のすべての日付を取得する

  11. 11

    指定された日付の間のすべての日付を取得します

  12. 12

    Excelは2つの日付の間で値を取得します

  13. 13

    Excelは2つの日付の間で値を取得します

  14. 14

    SparkScalaの新しい行の2つの日付の間のすべての日付(週)を追加します

  15. 15

    2つの日付の間の日付の配列を取得します

  16. 16

    2つの日付の間のすべての日付の配列またはリストを作成します

  17. 17

    他の2つの日付の間の日付を補間して、値を取得します

  18. 18

    PHP:配列内の2つの日付の間のすべての日付を返します

  19. 19

    表の2つの日付列の間のすべての日付を選択します

  20. 20

    2つの日付の間のランダムな日時ですべての行を更新します

  21. 21

    2つの日付の間の日付を選択します

  22. 22

    2つの日付の間に毎週月曜日の日付を取得します

  23. 23

    すべての行の2つの日付の差を取得します

  24. 24

    PrestoDB:2つの日付の間のすべての日付を選択します

  25. 25

    2つの日付の間のすべての時間を取得する方法

  26. 26

    LINQを使用して、2つの日付の間の日付の発生数を取得します

  27. 27

    Javacriptは、2つの日付の間の日数を取得します。

  28. 28

    SQLite:2つの日付の間の平均平日を取得します

  29. 29

    2つの日付の間のすべての日付を生成する方法

ホットタグ

アーカイブ