質問

ておきたいと思いクタ(および好ましくないを使用しながらループ)のcreateingテーブルの毎日の間に日@x日@yりできますので、左側の参加があドテーブル、あるい記録のための特定の日とさせて頂き、ありがとうマ欠日0

役に立ちましたか?

解決

厳密に言えばこれは当てはまりません確にお答え、その写快適性は十分満足できます

ときライブを指定して数日後に日後、共通のテーブル表現を与えます:

WITH numbers ( n ) AS (
        SELECT 1 UNION ALL
        SELECT 1 + n FROM numbers WHERE n < 500 )
    SELECT DATEADD(day,n-1,'2008/11/01') FROM numbers
    OPTION ( MAXRECURSION 500 )

他のヒント

ダウンロードいただけまん このブログ.

私はカレンダーを作成するテーブルが含まれる毎日から適切な開始日までの適切な末日です。こなかい空間データベースがこれらの種類のクエリ子どものです。

select  ...
from    Calendar
        left outer join
        ...
where   Calendar.Date >= @x
and     Calendar.Date <= @y

っていただけると思いますってみるべきではないだろうかだいがループを実行します。この醜いものです。

また実際にこのようなものですが、少しがんとうかを使用します。

最った温度テーブル、その選択をしたかったで参加できること.

ブログbdukeリンクでかわいいものだと思い温度テーブル溶液からクリーナー。

がその場で発音を確認することが別のテーブル内に格納する毎日でご来館のウェブサイト)が、どのようにしてこの...

Declare @FromDate datetime,  
        @ToDate datetime  
Declare @tmpDates table   
            (StatsDate datetime)
Set @FromDate = DateAdd(day,-30,GetDate())
Set @ToDate = GetDate()

Insert Into  @tmpDates (StatsDate)
Select 
    distinct CAST(FLOOR(CAST(visitDate AS DECIMAL(12, 5))) AS DATETIME)
FROM tbl_visitorstats 
Where visitDate between @FromDate And @ToDate 
Order By CAST(FLOOR(CAST(visitDate AS DECIMAL(12, 5))) AS DATETIME) 


Select * FROM @tmpDates

はなその他のテーブルをエントリのための毎日たい、その98%がんなデータの毎日です。

一味違った回答として与えられた https://stackoverflow.com/a/95728/395440.できる日を指定することも計算範囲は現在の日付です。

DECLARE @startDate datetime
SET @startDate = '2015/5/29';

WITH number ( n ) AS (
        SELECT 1 UNION ALL
        SELECT 1 + n FROM dates WHERE n < DATEDIFF(Day, @startDate, GETDATE()) )
    SELECT DATEADD(day,n-1,@startDate) FROM number where
    datename(dw, DATEADD(day,n-1,@startDate)) in ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday')
    OPTION ( MAXRECURSION 500 )

でのループを実行します。誰かが書くプすることもでき-またはSQLサーバーです。

DECLARE @Dates TABLE
(
  TheDate datetime PRIMARY KEY
)
DECLARE @StartDate datetime, @EndDate datetime
SELECT @StartDate = '2000-01-01', @EndDate = '2010-01-01'


DECLARE @LoopVar int, @LoopEnd int    
SELECT @LoopEnd = DateDiff(dd, @StartDate, @EndDate), @LoopVar = 0


WHILE @LoopVar <= @LoopEnd
BEGIN
  INSERT INTO @Dates (TheDate)
  SELECT DateAdd(dd,@LoopVar,@StartDate)

  SET @LoopVar = @LoopVar + 1
END


SELECT *
FROM @Dates

う:がcol>開始日col < 終了日時

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top