2017-09-26 58 views
0

在事務表中,有order_ID(PK),transaction_date,cus_ID,store_ID。 現在我需要通過cus_ID,count(store_ID)= 1來獲取所有cus_ID。但有一個例外 - 當cus_ID只有store_ID ='999'的訂單時。 交易日期應爲過去365天。 我有如下代碼:如何排除使用group by和count時的特殊條件()

Select cus_ID, count(store_ID) as store_count 
From trn_header 
where transanction_date From '7/30/2017' - 365 To '7/30/2017' 
group by cus_ID having store_count = 1 

我只是不知道如何排除在 '999' 條件... 感謝

+0

當'store_ID ='999''那麼什麼?它聽起來像你需要一個CASE的陳述,但我並不理解你的邏輯。 – Simon

+0

如果一個cust_id的所有訂單都是store_ID ='999',它應該被我的查詢排除。 –

回答

0

的正確的答案應該是這樣的:

select distinct cus_id, store_id from 
(select cus_id,count(distinct store_id) as freq 
from a 
where transaction_date between @begin_date and @end_date 
group by cus_id 
having count(distinct store_id) = 1 
) b, a where a.cus_id = b.cus_id and store_id <> '999' 
0
Select cus_ID, count(store_ID) as store_count 
From trn_header 
where transanction_date From '7/30/2017' - 365 To '7/30/2017' And store_ID<>'999' 
group by cus_ID having store_count = 1 

希望它可以幫助

+0

找出來,因爲我應該使用子查詢來排除store_id ='999'的情況;我的問題存在誤解。對於那個很抱歉。 –