У меня есть повторяющийся SQL-запрос, чтобы заполнить простую таблицу на основе субаккаунтов/лет из списка сумм, удерживаемых субсчетами/годами, но не существует отношения один к одному. Вывод предназначен для отчета SSRS.Упрощение повторяющегося запроса SQL Server
CREATE TABLE [dbo].[Results](
[SchemeDescription] [varchar](50) NULL,
[SubAccountYear] [varchar](15) NULL,
[RowNumber] [int] NULL,
[2008] [money] NULL,
[2009] [money] NULL,
[2010] [money] NULL,
[2011] [money] NULL,
[2012] [money] NULL,
[2013] [money] NULL,
[2014] [money] NULL,
[2015] [money] NULL,
[2016] [money] NULL,
[2017] [money] NULL,
[2018] [money] NULL,
[2019] [money] NULL,
[2020] [money] NULL,
[Processed] [int] NULL
) ON [PRIMARY]
UPDATE res
SET
[2008] = res.[2008] + isnull(x.[2008],0)
,[2009] = res.[2009] + isnull(x.[2009],0)
,[2010] = res.[2010] + isnull(x.[2010],0)
,[2011] = res.[2011] + isnull(x.[2011],0)
,[2012] = res.[2012] + isnull(x.[2012],0)
,[2013] = res.[2013] + isnull(x.[2013],0)
,[2014] = res.[2014] + isnull(x.[2014],0)
,[2015] = res.[2015] + isnull(x.[2015],0)
,[2016] = res.[2016] + isnull(x.[2016],0)
,[2017] = res.[2017] + isnull(x.[2017],0)
,[2018] = res.[2018] + isnull(x.[2018],0)
,[2019] = res.[2019] + isnull(x.[2019],0)
,[2020] = res.[2020] + isnull(x.[2020],0)
,processed = **1**
FROM [Results] res
INNER JOIN [Other_Income] as x
ON x.SubAccountYear = Cast(Cast(res.SubAccount AS Int)as Varchar(10)) + '¬'
+ Cast (YEAR(res.Inception_Date)+ **1** as varchar(4))
AND x.Processed = 0
WHERE res.RowNumber = 1
Я должен повторить запрос выше в 10 раз, чтобы убедиться, что все субсчета лет распределяются на соответствующий субсчет, фигуры, окруженные звездочками необходимо перечислить от 1 до 10.
Я Конечно, есть другой способ, но он ускользает. Любые идеи оценили.
Спасибо. Я задавался вопросом, могу ли я использовать только SQL, а не SP или цикл. – Anthony
Хранимая процедура * есть * просто sql ... здесь нет магии ... –