2012-03-14 2 views
0

Я буду использовать свой вывод для размещения в сводной таблице Excel. Данные относятся к кредитным счетам, которые либо были сняты, либо нет.SQL Case Statement или другой метод?

EDIT: Если в сводной таблице проверяется перезагрузка, я хочу, чтобы столбец totalaccounts составлял счет всех учетных записей независимо от значения chargeoffdate. Если перезагрузки остаются непроверенными, я хочу, чтобы totalaccounts считался счетом всех учетных записей, когда chargeoffdate имеет значение NULL.

Вот мой SQL синтаксис до сих пор:

SELECT 
c.brand, 
CASE WHEN a.chargeoffdate IS NULL THEN 'No Chargeoffs' 
-- Below here should not be only chargeoffs, it should be chargeoffs + the column above ^^^ 
WHEN a.chargeoffdate IS NOT NULL THEN 'Chargeoffs' 
ELSE 'Unknown' END AS chargeoffs, 

COUNT(*) AS totalaccounts 

FROM accounts 
GROUP BY brand, chargeoffs 

Вы можете увидеть комментарии в моем SQL, чтобы понять, что я буду за, но я не могу понять, как это сделать.

Я пробовал:

CASE WHEN a.chargeoffdate IS NULL THEN 'No Chargeoffs' 
-- Below here should not be only chargeoffs, it should be chargeoffs + the column above ^^^ 
WHEN (a.chargeoffdate IS NOT NULL OR a.chargeoffdate IS NULL) THEN 'Chargeoffs Included' 
ELSE 'Unknown' END AS chargeoffs 

Но получили те же результаты, что и верхний запрос по какой-либо причине. Благодарю.

ДРУГОЙ EDIT: OUTPUT DESIRED

BRAND 1 | WITH CHARGEOFFS  | COUNT(TOTALACCOUNTS) 
BRAND 1 | WITHOUT CHARGEOFFS | COUNT(TOTALACCOUNTS) 
BRAND 2 | WITH CHARGEOFFS  | COUNT(TOTALACCOUNTS) 
BRAND 2 | WITHOUT CHARGEOFFS | COUNT(TOTALACCOUNTS) 
+0

Столбец «Зарядка» и «Без перезарядки» на столе или значения в столбце таблицы? –

+1

Это похоже на странное условие: 'a.chargeoffdate IS NOT NULL ИЛИ a.chargeoffdate IS NULL' вы знаете, что он всегда будет оценивать истину? –

+0

chargeoffdate - столбец. если он недействителен, они не взимаются иным образом. chargeoffs - это просто псевдоним, и вот как я группирую оператор case, поэтому его можно использовать в сводной таблице –

ответ

0

Обновлено:

списаний = Число всех счетов, является ли нулевым chargeoffdate или нет

Нет списаний = Число всех счетов, где chargeoffdate является нулевым (они не списаны)

SELECT 
    brand, 
    count(*) as "Chargeoffs", 
    sum(CASE WHEN a.chargeoffdate IS NULL THEN 1 ELSE 0 END) as 'No Chargeoffs' 
FROM accounts 
GROUP BY brand 

UP ДАТА: Я устал, я получил этот длинный SQL, которым близко то, что вы хотите:

SELECT brand, 
     tp, 
     CASE WHEN TP = 1 then sum(cnt) END as 'No Chargeoffs', 
     sum(cnt) as "Chargeoffs" 
FROM(
    SELECT 
     brand, 
     CASE WHEN a.chargeoffdate IS NULL THEN 1 ELSE 0 END as tp 
     count(*) as cnt 
    FROM accounts 
    GROUP BY brand, CASE WHEN a.chargeoffdate IS NULL THEN 1 ELSE 0 END 
GROUP BY brand, tp 
+0

Ну, все мои другие столбцы подсчитаны, поэтому скажите, что я считаю (*), я хочу, чтобы мой результат был следующим: Chargeoffs = Количество всех учетных записей, является ли chargeoffdate нулевым или нет, и No Chargeoffs = Подсчет всех аккаунтов, в которых chargeoffdate имеет значение null (они не были сняты) –

+0

ОК, пожалуйста, обновите свой пост, со всеми sql или некоторыми подсчетами, чтобы мы поняли –

+0

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

0

Это было отчасти глупо и мое решение было легко. Я просто оставил его, как у меня, и сводная таблица добавила их вместе для меня.

Я нашел это после того, как создал два отдельных запроса и сделал некоторые манипуляции с данными с помощью SAS, чтобы получить то, что я хотел. Уч.