Я говорю это, потому что я пробовал все обычные решения, и они просто не работают. вот что у меня есть ..не просто ошибка «column invalid in select list»
Таблица 1
CREATE TABLE dbo.Temp
(
PrintData nvarchar(250) NOT NULL,
Acronym nvarchar(3) NOT NULL,
Total int not null
)
это успешно заполняется с использованием 3 ВЫБРАТЬ-х с группой К unioned вместе
Таблица 2
CREATE TABLE dbo.Result
(
PrintData nvarchar(250) NOT NULL,
Acronym nvarchar(3) NOT NULL,
Total int not null,
[Percent] decimal(7,5) not null
)
все я хочу сделать, это заполнить эту таблицу из таблицы 1, добавив столбец «Процент», который я рассчитать, используя следующую STMT ..
INSERT INTO dbo.Result
(PrintData, Acronym, Total, [Percent])
select *, ((t.Total/SUM(t.Total)) * 100)
from Temp t
group by PrintData, Acronym, Total
но процент цв выходит как 0.00000 на каждой строке я думал, что это может иметь что-то делать с группой по но если я удалить его, я получаю, что глупая ошибка я цитировал. некоторые выборочные данные из таблицы 1 ..
OSHIKANGO OSH 1
WINDHOEK 1 WHA 18
WINDHOEK 2 WHB 8
WINDHOEK 3 WHC 2
WINDHOEK 4 WHD 4
с этой выборки данных, SUM (Total) составляет 33. то, что я хочу в таблице 2 это ..
OSHIKANGO OSH 1 3.03030
WINDHOEK 1 WHA 18 54.5454
WINDHOEK 2 WHB 8 24.2424
WINDHOEK 3 WHC 2 etc
WINDHOEK 4 WHD 4
кажется, что это должно быть проще чем это и надеюсь, что я не должен идти так далеко, как с помощью цикла транзакции/курсора ..
Изменение типа данных [Percent] столбца в виде десятичной дроби (7,4) или десятичной (8, 5). Если вычисленное значение [Percent] равно 100, вы получите сообщение «Ошибка воздушного переполнения». –
Я бы рекомендовал НЕ хранить это рассчитанное значение. Что происходит, когда строка удаляется или обновляется? Вот почему мы не храним вычисляемые значения и вместо этого делаем это во время выполнения. Если бы он не использовал агрегат, я бы предложил использовать вычисляемый столбец. –