2014-12-02 2 views
0

У меня есть таблица, какSQL Server: Получить сумму, основываясь на Id из одного столбца

enter image description here

мне нужен результат как

enter image description here

У меня есть только два CaseNo, 1 и 2 . Как это сделать в одном запросе, а не в обычном выражении таблицы или в отдельных запросах?

+2

CTE - это один запрос. –

+0

CTE - это единственный запрос, но затем вам нужно выбрать cte. – Lali

ответ

3

Вы можете использовать условную агрегацию:

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. Если вам нужны данные в этом формате в приложении, вы должны, вероятно, сделать это на прикладном уровне.

+0

Я как раз собирался опубликовать тот же код. Согласен. Кроме того, как только вы получаете 'CaseNo3', вещи начинают становиться более уродливыми. – Andrew

+0

Отлично, я думал о том, чтобы присоединиться к себе. Извините за мои ограниченные знания. Я не могу понять, почему мой вопрос понижен. – Lali

0
SELECT 'Amount' , 
[1], [2] 
FROM 
(SELECT CaseNo, Amount 
    FROM table) AS SourceTable 
PIVOT 
(
sum(Amount) 
FOR CaseNo IN ([1], [2]) 
) AS PivotTable; 
Смежные вопросы