Автоматизация этого SQL запроса - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть этот запрос, который я выполняю, и мне нужно выполнить его для 60 различных дат. Каждый раз нужно вводить разные даты. Есть ли способ сделать этот прогон для некоторых дат и результатов, записанных для каждой даты?

     DROP TABLE IF EXISTS #1
         declare @d1 datetime = '2020-01-20' 
         declare @d2 datetime = @d1 - 29
     select distinct [user] into #1
      from [Customerbase].[dbo].[Base]
      where [DATE] between @d2 and @d1;

select  sum(cast([bal] as decimal(16,4))) as sum , avg(cast([bal] as decimal(16,4))) as avg
      from #1
      inner join [reg].[dbo].[dailyfile]
      on #1.user= [reg].[dbo].[dailyfile].user
      where   [reg].[dbo].[dailyfile].[date] = @d1

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Я бы предложил что-то вроде этого:

with t1 as (
      select distinct b.user, v.dte
      from [Customerbase].[dbo].[Base] b join
           (values (convert(date), date1), . . .   -- list dates here
           ) v.dte
      on b.date between dateadd(day -29, v.date) and v.dte
     )
select t1.dte, sum(cast([bal] as decimal(16, 4))) as sum,
       avg(cast([bal] as decimal(16, 4))) as avg
from t1 join
     [reg].[dbo].[dailyfile] df
     on t1.user = dt.user and
        df.[date] = t1.dte
group by t1.dte;
0 голосов
/ 12 февраля 2020

Может быть, что-то вроде этого будет работать для вас.

DECLARE @Dates AS TABLE (QueryDate DATE)
INSERT INTO @Dates VALUES ('2020-01-20')
INSERT INTO @Dates VALUES ('2019-12-15')
INSERT INTO @Dates VALUES ('2019-11-12')
-- insert addnal dates here

;WITH cteUserDates AS (
SELECT [user], d.QueryDate 
FROM [Base] b
INNER JOIN @Dates d ON b.[date] = d.QueryDate
)
select sum(cast([bal] as decimal(16,4))) as sum , avg(cast([bal] as decimal(16,4))) as avg
from cteUserDates d inner join
     [dailyfile] df
     on d.[user] = df.[user] and  d.QueryDate = df.[date]
group by d.[user], d.QueryDate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...