2017-06-14 23 views

回答

0

如果我理解正確的要求,你要誰使用CHANNEL = ATM所有客戶的名單,但沒有其他的渠道。

這應該做的伎倆:

SELECT 
    CUST 
FROM 
    MyTable 
WHERE 
    CHANNEL = 'ATM' 
    AND CUST NOT IN (SELECT DISTINCT CUST FROM MyTable WHERE CHANNEL != 'ATM') 

在最後一行的子查詢構建利用其他渠道包含任何客戶的表的子集。我們排除了所有使用CHANNEL = ATM的MyTable中的結果。

***更新它拋出一個錯誤

我重新創建表,並運行下面的查詢的評論如下:

CREATE TABLE myTable 
(
    CUST char(1) 
    , CHANNEL char(3) 
) 
; 

INSERT INTO myTable 
VALUES ('A', 'ATM') 
, ('B', 'POS') 
, ('C', 'MOB') 
, ('A', 'ATM') 
, ('A', 'ATM') 
, ('B', 'ATM') 
, ('C', 'ATM') 
; 

SELECT 
    CUST 
    , CHANNEL 
FROM 
    MyTable 
WHERE 
    CHANNEL = 'ATM' 
    AND CUST NOT IN (SELECT DISTINCT CUST FROM MyTable WHERE CHANNEL != 'ATM') 

這個工作沒有SQL Server上順利。

+0

非常感謝。真的很有幫助。 –

+0

如果這解決了您的問題,請將其標記爲接受的答案。這樣未來的訪問者可以看到對你有什麼竅門。謝謝:) – SchmitzIT

+0

你應該接受答案,如果這是你在找什麼。 –

0

爲什麼不使用SAS SQL語句?

proc sql; 
    Select * from input_data 
    where cust = 'A' 
    and channel = 'ATM'; 
quit;