У меня есть таблица, какSQL Server: Получить сумму, основываясь на Id из одного столбца
мне нужен результат как
У меня есть только два CaseNo, 1 и 2 . Как это сделать в одном запросе, а не в обычном выражении таблицы или в отдельных запросах?
У меня есть таблица, какSQL Server: Получить сумму, основываясь на Id из одного столбца
мне нужен результат как
У меня есть только два CaseNo, 1 и 2 . Как это сделать в одном запросе, а не в обычном выражении таблицы или в отдельных запросах?
Вы можете использовать условную агрегацию:
select 1 as CaseNo1, sum(case when CaseNo = 1 then Amount end) as Amount1,
2 as CaseNo2, sum(case when CaseNo = 2 then Amount end) as Amount2
from table;
Однако, я бы не рекомендовал делать это преобразование в SQL. Если вам нужны данные в этом формате в приложении, вы должны, вероятно, сделать это на прикладном уровне.
Я как раз собирался опубликовать тот же код. Согласен. Кроме того, как только вы получаете 'CaseNo3', вещи начинают становиться более уродливыми. – Andrew
Отлично, я думал о том, чтобы присоединиться к себе. Извините за мои ограниченные знания. Я не могу понять, почему мой вопрос понижен. – Lali
SELECT 'Amount' ,
[1], [2]
FROM
(SELECT CaseNo, Amount
FROM table) AS SourceTable
PIVOT
(
sum(Amount)
FOR CaseNo IN ([1], [2])
) AS PivotTable;
CTE - это один запрос. –
CTE - это единственный запрос, но затем вам нужно выбрать cte. – Lali