SQL Server 2008: использование SIGN для получения положительного или отрицательного значения - PullRequest
3 голосов
/ 22 декабря 2011

У меня есть большая таблица (миллионы записей), содержащая суммы транзакций по типу транзакции.Я пытаюсь получить COUNT для каждого типа транзакции, где сумма больше, меньше и равна 0. Я выполнял 3 отдельных запроса, чтобы получить эту информацию, меняя в каждом из них предложение WHERE, а затем объединяя результатыпотом.

Может ли кто-нибудь порекомендовать более разумный способ написания этого утверждения?

1 Ответ

4 голосов
/ 23 декабря 2011
SELECT 
TRANSACTION_CD
,SUM(CASE WHEN ft.transaction_amt < 0 THEN 1 ELSE 0 END) AS NegativeCount
,SUM(CASE WHEN ft.transaction_amt = 0 THEN 1 ELSE 0 END) AS ZeroCount
,SUM(CASE WHEN ft.transaction_amt > 0 THEN 1 ELSE 0 END) AS PositiveCount
FROM [FINANCIAL_TRANSACTION] ft
INNER JOIN POLICY p ON p.POLICY_ID = ft.POLICY_ID
WHERE 
ft.EFFECTIVE_DT > '01/01/2008'
GROUP BY 
TRANSACTION_CD
ORDER BY 
TRANSACTION_CD 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...