2012-11-15 42 views
0

我有下面的代碼片段:使用情況時,則

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

我要複製的完全相同的行爲作爲一個選擇功能,而不是計數功能。因爲我不知道該功能不夠好,我不知道如何:

即事先的結果是「X新客戶」

現在,我希望能有一個結果,這將是

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

等等。

我將不勝感激您的幫助!

+1

您的表格是如何定義的?你的代碼段中沒有'count()'。請顯示完整的陳述。更多的相關信息會給出更好的答案 –

+0

你是什麼意思「但不作爲計數功能」?你的例子不使用'COUNT'... –

+0

@ChrisMoutray - 我認爲OP試圖複製和粘貼一個片段,但錯過了COUNT部分。這就是爲什麼CASE語句被包含在()中的原因。 – MatBailie

回答

2

據我所知,你只是想要一個新的客戶ID列表。

對於這一點,你並不需要一個CASE語句在所有...

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代碼正在計數的ID。 – MatBailie