Есть некая таблица с полями Amount (float) и Type (char).
Мне необходимо вывести суммы Amount'ов для разных типов Type. Я делаю это так:
SELECT
(
SELECT SUM(Amount) FROM MyTable WHERE Type = 'A'
) AS AmountA,
(
SELECT SUM(Amount) FROM MyTable WHERE Type = 'B'
) AS AmountB
и т.д.
Возможно ли оптимизировать данный запрос, улучшив быстродействие?
D>Есть некая таблица с полями Amount (float) и Type (char). D>Мне необходимо вывести суммы Amount'ов для разных типов Type. Я делаю это так: D>SELECT D>( D> SELECT SUM(Amount) FROM MyTable WHERE Type = 'A' D>) AS AmountA, D>( D> SELECT SUM(Amount) FROM MyTable WHERE Type = 'B' D>) AS AmountB
Используй ключевое слово GROUP BY.
select sum(amount) from mytable group by type
Здравствуйте, Denisello, Вы писали:
D>Всем доброго дня и хорошего настроения!
D>Вопрос по MSSQL 2000.
D>Есть некая таблица с полями Amount (float) и Type (char). D>Мне необходимо вывести суммы Amount'ов для разных типов Type. Я делаю это так: D>SELECT D>( D> SELECT SUM(Amount) FROM MyTable WHERE Type = 'A' D>) AS AmountA, D>( D> SELECT SUM(Amount) FROM MyTable WHERE Type = 'B' D>) AS AmountB
D>и т.д.
SELECT SUM(Amount), Type
FROM MyTable
GROUP BY Type
P.S. Правда изначально мне нужно было вернуть все это в одной строке.
Т.е. разные типы Amount'ов раскидываются не по строкам, а по полям. В таком случае, интересно, можно изменить запрос?
Тем не менее, мне такой вариант тоже подходит. Всем спасибо.
Здравствуйте, Denisello, Вы писали:
D>P.S. Правда изначально мне нужно было вернуть все это в одной строке. D>Т.е. разные типы Amount'ов раскидываются не по строкам, а по полям. В таком случае, интересно, можно изменить запрос?
D>Тем не менее, мне такой вариант тоже подходит. Всем спасибо.
SELECT
SUM(CASE WHEN Type = 'A' THEN Amount END) AS Sum_A,
SUM(CASE WHEN Type = 'B' THEN Amount END) AS Sum_B
FROM
...