Здравствуйте, qqq0ppp, Вы писали:
Q>День добрый, подскажите начинающему
Q>Есть таблица, н/р:
Q>д1 д2 д3....(тип варчар)
Q>3 2
Q> б 3
Q>5 3
Q>мне нужно добыть сумму каждого столбца
Q>если просто бы были цифры — то тогда все ОК
Q>пишу
Q>...
Q>SELECT
Q>SUM(CAST(Round(D1,2)As decimal(5,2))) As D1
Q>FROM
Q>...
Q>но там есть и буквы, которые эквивалентны сумме=8
Q>тогда пишу
Q>...
Q>SELECT
Q>SumD2 =
Q>CASE D1
Q> WHEN 'б' then 8
Q> ELSE
Q> SUM(CAST(Round(D2,2)As decimal(5,2)))
Q>END
Q>FROM
Q>...
Q>и вот тебе подарок Column dbo.Zadanie.D2 is invalid in the select list because it is not contained in either an aggregate function or ORDER BY clause
Q>подскажите что я делаю не так??
Надо sum вытащить наружу,
-- так:
SELECT
SUM(D2) AS SumD2
FROM
(
SELECT
D2 = CASE D1
WHEN 'б' THEN 8
ELSE CAST(ROUND(D2,2) AS DECIMAL(5,2))
END
FROM
X
) R
-- или так,
WITH R AS (
SELECT
D2 = CASE D1
WHEN 'б' THEN 8
ELSE CAST(ROUND(D2,2) AS DECIMAL(5,2))
END
FROM
X
)
SELECT
SUM(D2) AS SumD2
FROM
R