У меня есть инструкция case для суммирования, округления и маркировки сумм, которая работает нормально, но данные заканчиваются в горизонтальном формате (несколько денежных сумм на запись), что заставляет меня выполнить разворот в последующем выражении для форматирования данных по вертикали(одна сумма денег за запись). Я хотел бы сделать это в одном заявлении, если это возможно. Мой код выглядит следующим образом:
SELECT
Field,
ROUND(SUM(CASE
WHEN TYPE = 'Paid Loss'
THEN AMOUNT
ELSE 0
END
), 2
) PAID,
ROUND(SUM(CASE
WHEN TYPE = 'OS'
THEN AMOUNT
ELSE 0
END
), 2
) OS,
ROUND(SUM(CASE
WHEN TYPE <> 'Paid Exp'
THEN AMOUNT
ELSE 0
END
), 2
) INCURRED
FROM dbo.mydatabase
GROUP BY Field;
Результат:
Field |PAID |OS |INCURRED
----------------------------
result1 | 1 | 20 | 10
result2 | 5 | 30 | 15
Когда то, что я действительно хочу:
Field | DATA_TYPE | AMOUNT
---------------------------
result1 | PAID | 1
result2 | PAID | 5
result3 | OS | 20
result4 | OS | 30
result5 | INCURRED | 10
result6 | INCURRED | 15
Ключи будут уникальными, так чтоне проблемаКто-нибудь знает, как переставить CASE, чтобы это можно было сделать одним утверждением? Спасибо!