輸入數據:我該如何隔離給定條件下的數據?
CUST CHANNEL
A ATM
B POS
C MOB
A ATM
A ATM
C ATM
B ATM
所以我想,誰只使用ATM的客戶,這是一個只。 輸出數據:
CUST CHANNEL
A ATM
A ATM
A ATM
輸入數據:我該如何隔離給定條件下的數據?
CUST CHANNEL
A ATM
B POS
C MOB
A ATM
A ATM
C ATM
B ATM
所以我想,誰只使用ATM的客戶,這是一個只。 輸出數據:
CUST CHANNEL
A ATM
A ATM
A ATM
如果我理解正確的要求,你要誰使用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上順利。
爲什麼不使用SAS SQL語句?
proc sql;
Select * from input_data
where cust = 'A'
and channel = 'ATM';
quit;
非常感謝。真的很有幫助。 –
如果這解決了您的問題,請將其標記爲接受的答案。這樣未來的訪問者可以看到對你有什麼竅門。謝謝:) – SchmitzIT
你應該接受答案,如果這是你在找什麼。 –