У меня есть следующие данные, которые используются для расчета ежедневного события.Число столбцов меняется ежедневно, например, первый день может быть от 1 до 5, второй день от 1 до 8, третий день от 1 до 10 и т. Д. Поэтому я использовал динамический поворот, чтобы получить столбцы и вставить его во временную таблицу ##No.из таблицы я хочу сложить значение от 1 до N-го столбца, чтобы получить общий итог.
Данные
CREATE TABLE ##TBL (Number INT, Months VARCHAR(10), Total INT)
INSERT INTO ##TBL VALUES
(3,'Dec',1),(10,'Dec',1),(8,'Dec',1),(6,'Mar',1),(9,'Mar',1),(6,'Mar',1),(3,'Dec',1),(5,'Mar',1),(3,'Mar',1),
(2,'Mar',1),(10,'Dec',1),(7,'Mar',1),(3,'Mar',1),(6,'Dec',1),(4,'Mar',1),(9,'Dec',1),(1,'Mar',1),(3,'Mar',1),
(5,'Dec',1),(9,'Dec',1),(5,'Mar',1),(8,'Mar',1),(7,'Mar',1),(5,'Mar',1),(4,'Mar',1),(8,'Mar',1),(3,'Mar',1),
(7,'Mar',1),(5,'Mar',1),(2,'Mar',1),(6,'Mar',1),(2,'Mar',1),(8,'Dec',1),(1,'Mar',1),(5,'Mar',1),(6,'Mar',1),
(8,'Mar',1),(3,'Mar',1),(9,'Dec',1),(5,'Dec',1),(8,'Dec',1),(7,'Dec',1),
(5,'Dec',1)
сводная таблица для получения выходных данных
DECLARE @Numb AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @Numb =(SELECT SUBSTRING(
(
SELECT distinct', ' + QUOTENAME(Number) AS 'data()'
FROM ##TBL
FOR XML PATH('')
), 2 , 9999) As nums)
SET @query =
'SELECT *
INTO ##NO
FROM ##TBL
PIVOT
( SUM(Total) FOR Number IN ('+@Numb+')) PV'
EXEC (@query)
SELECT
*,
ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+ISNULL([6],0)+ISNULL([7],0)+
ISNULL([8],0)+ISNULL([9],0)+ISNULL([10],0) AS Grand_Total
FROM ##NO
DROP TABLE ##NO
текущий вывод
Months 1 10 2 3 4 5 6 7 8 9 Grand_Total
Dec NULL 2 NULL 2 NULL 3 1 1 3 3 15
Mar 2 NULL 3 5 2 5 4 3 3 1 28
Есть ли способ, которым я могу динамически суммировать столбцы всякий раз, когда столбцы уменьшаются или увеличиваются в конце?Столбцы всегда начинаются с 1,2,3… .n, и меня не особо беспокоит порядок столбцов
Требуемый выходной день 1
Months 1 2 3 4 5 Grand_Total
Dec NULL NULL 2 NULL 3 5
Mar 2 3 5 2 5 17
Требуемый выходной день 2
Months 1 2 3 Grand_Total
Dec NULL NULL 2 2
Mar 2 3 5 10
Я хочу, чтобы когда-либо увеличивались или уменьшались данные столбца числа.Я хочу иметь возможность добавить их.Иногда число начинается с 1 до 5, еще раз с 1 по 7, еще раз с 1 по 8 и т. Д.