sql >> Databáze >  >> RDS >> Sqlserver

SQL spustit proměnnou +1, dokud proměnná nedosáhne 52?

Pokud uvažujete v termínech smyčkování, jdete po špatné cestě. Musíte přemýšlet z hlediska logiky založené na množinách. Co musíte udělat, je zcela se zbavit proměnné @weeknumber a jednoduše seskupit data jinak. Chcete seskupit podle týdnů, takže musíte vypočítat číslo týdne. To lze provést pomocí DATEDIFF() a 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. Oracle Cloud:Vytvoření databáze ATP (Autonomous Transaction Processing).

  2. Nelze se připojit k MYSQL z instance Docker

  3. Komplexní databázové dotazy v yii2 s aktivním záznamem

  4. Klauzule MySql 5.7 ORDER BY není v klauzuli GROUP BY a obsahuje neagregovaný sloupec