2014-10-30 31 views
-1

我正在研究一個SQL項目,而我對SQL相當陌生。在SQL中分割來自同一列的數據

在問題中,有帳戶註冊和帳戶沒有。什麼是正確的語法過濾所有註冊到一邊和未註冊的另一邊。

我想讓它看起來像兩個不同的列。

+0

你嘗試過什麼,什麼是這些表的結構?還有,當你說「在一邊註冊的人」時,你是什麼意思?你想要兩個查詢來分割數據集,還是你想先註冊所有賬戶,然後是匿名賬戶? – SchmitzIT 2014-10-30 18:38:55

+0

對不起,這有點不清楚。是我迄今爲止。 'SELECT \t name AS BankName, \t \t COUNT(DISTINCT num_trans)AS NumberOfTransactions, \t \t SUM(DISTINCT支出)AS TotalSpent, \t \t註冊爲註冊 從銀行 WHERE名稱LIKE '%bank1_201001%' GROUP BY名稱,註冊 UNION ALL SELECT \t名AS BANKNAME, \t \t COUNT(DISTINCT num_trans)AS NumberOfTransactions, \t \t SUM(DISTINCT支出)AS TotalSpent, \t \t註冊爲註冊 從銀行 WHERE名稱LIKE「%bank2_201001%」 GROUP BY的名字,registered' 當我運行它,它有註冊的列,但我想 – user1892956 2014-10-30 19:00:10

+0

做出註冊列與所註冊的銀行下面,然後有一個非註冊專欄與其下的銀行。 – user1892956 2014-10-30 19:07:34

回答

0

根據你的編輯,你已經很好了。缺少的部分似乎在捕捉在第一個查詢中註冊的銀行,而在第二個查詢中未註冊的銀行。

要做到這一點,你可以用一個WHERE條款上registered列,只有抓住那些你想,像這樣(假設註冊將包含1註冊和0未註冊:

... 
WHERE 
    name LIKE '%bank1_201001%' 
    AND registered = 1 
... 
UNION ALL 
... 
WHERE 
    name LIKE '%bank2_201001%' 
    AND registered = 0 
... 

,那真的也刪除了必須輸入實際銀行名稱的要求(我猜你是這麼做的,因爲你知道第一個是註冊的,第二個不是?)。

我不完全確定如果這是你需要的,特別是「我正在努力在重新註冊的銀行上註冊一個專欄在它下面服務「有點令人困惑。您最初選擇名稱,這將是銀行名稱。然後Registered列會顯示YesNo(或1「和0)一個布爾列。

讓我知道如果這能幫助?

相關問題