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

SQLは変数が52に達するまで変数+1を実行しますか?

    あなたがループの観点から考えているなら、あなたは間違った道を進んでいます。セットベースのロジックの観点から考える必要があります。あなたがする必要があるのは、@ weeknumber変数を完全に取り除き、データを異なる方法でグループ化することです。週ごとにグループ化したいので、週番号を計算する必要があります。これは、DATEDIFF()およびDATEPART(dw、...)を使用して実行できます:

    declare @StartDate date
    declare @EndDate date
    declare @WeekNumber int
    
    set @StartDate = '01/06/2014'
    set @EndDate = '07/06/2015'
    --set @WeekNumber = 01
    
    select datediff(ww,@startdate,[WeekStartDate])+1 [WeekNumber]
    ,[WeekStartDate]
    ,dateadd(dd,6,[WeekStartDate]) [WeekEndDate]
    ,* 
    From (Select t1.LeadSource
                        ,count(t1.prospectid) [Leads]
                        ,sum(t1.Found) [Apps]
                        ,dateadd(dd,2-datepart(dw,t1.CreateDate),t1.CreateDate) WeekStartDate
            from Table T1 
            where t1.CreateDate between @startDate
                and @enddate
    GROUP BY f.LeadSource ) f
    


    1. SQL:返されるレコードの数を制御する

    2. 'SQLSTATE [HY093]:無効なパラメーター番号:バインドされた変数の数がトークンの数と一致しません'

    3. 1ページで多くのクエリを実行するにはどうすればよいですか?

    4. postgres selectで、列のサブクエリを配列として返しますか?