2012-11-15 3 views
0

У меня есть следующий фрагмент кода:используя случай, когда то

COUNT (DISTINCT CASE WHEN (a.FIRST_ORDER_DAY = b.ORDER_DAY) THEN a.CUSTOMER_ID END) AS new_customer 

Я хочу повторить точно такое же поведение как функция выбора вместо функции подсчета. Как я не знаю функции достаточно хорошо, я не знаю, как:

т.е. заранее результат был «х новых клиентов»

Теперь я хочу, чтобы получить результат, который был бы

new customers: 
123 (customer ID) 
234 (another customer iD) 

и так далее.

Буду признателен за вашу помощь!

+1

Как определяется ваш стол? В вашем фрагменте нет 'count()'. Прошу показать полные заявления. Более релевантная информация дает лучшие ответы. –

+0

Что значит «но не как функция подсчета»? В вашем примере не используется 'COUNT' ... –

+0

@ChrisMoutray - Я думаю, что OP попытался скопировать и вставить фрагмент, но пропустил часть' COUNT'. Вот почему оператор CASE заключен в(). – MatBailie

ответ

2

Из чего я понимаю, вам просто нужен список новых идентификаторов клиентов.

Для этого вам не нужен саз вообще ...

SELECT DISTINCT 
    a.CustomerID 
FROM 
    ??? 
WHERE 
    a.FIRST_ORDER_DAY = b.ORDER_DAY 

??? должен быть заменен независимо соединяет вас есть (но не включили в своем вопросе).

+0

Разве это не просто вытащить каждого клиента, который что-то заказал? Если таблица, где хранятся заказы, очищается, похоже, что это приведет к множеству ложных срабатываний. –

+0

привет все, извините. правильное сокращение: COUNT (DISTINCT CASE WHEN (a.FIRST_ORDER_DAY = b.ORDER_DAY) THEN a.CUSTOMER_ID END) AS new_customer – user1820913

+0

@JoeW - Это копия логики, предоставленной OP. Я предполагаю, что 'ORDER_DAY' относится только к самому последнему порядку. Поэтому, если это соответствует «FIRST_ORDER_DAY», то самым последним заказом является первый заказ, и поэтому клиент является новым. Но это предположение. Этот код просто выводит идентификаторы, которые подсчитывает код OP. – MatBailie

Смежные вопросы