2016-10-21 35 views
0

我正在使用SQLite。SQLite。如何從一個SQL Case函數中將兩個案例合併到一列中?

我有這個疑問:

SELECT Customer.contract_number, 
     Customer.name, 
     Customer.last, 
     Customer.phone, 
     Contrato.desc, 

     CASE Contract.sinc WHEN 1 THEN 'Sincro' ELSE 'NO sincro' END Status1, 
     CASE Customer.rev WHEN 1 THEN 'Rev' ELSE 'No rev' END Status2 

    FROM Customer, 
     Contract 
WHERE Customer.contract_number = Contract.contract_number 
UNION ALL 
SELECT HandCo.contract_number, 
     HandCo.name, 
     HandCo.last, 
     HandCo.phone, 
     HandCo.des, 

     CASE HandCon.tradit WHEN 1 THEN 'Tradit' ELSE NULL END Status3 

    FROM HandContract; 

我要合併狀態1的結果,在短短的一列從狀態2的結果。 我該怎麼做?謝謝。

我在查詢中使用了一個UNION,這就是爲什麼我要合併Case Funtion的原因。

謝謝你的回覆。

+0

你有什麼理由不能只是連接兩個'CASE'語句? –

+0

「合併」是什麼意思?請提供一些示例數據和您想要的輸出。 –

回答

0

您可以使用||連接字符串。以sqllite表示。

SELECT Customer.contract_number, Customer.name, Customer.last, Customer.phone, Contract.desc, 

    CASE Contract.sinc WHEN 1 THEN 'Sincro' ELSE 'No sincro' END 
    || 
    CASE Customer.rev WHEN 1 THEN 'Rev' ELSE 'No Rev' END Status 
FROM 
    Customer, Contract; 

類似的話題:How to concatenate strings with padding in sqlite

+0

嗯,我在這裏有點新手,我沒有解釋清楚。 這是我的全部查詢: –

+0

SELECT Customer.contract_number, Customer.name, Customer.last, Customer.phone, Contrato.desc, CASE Con​​tract.sinc WHEN 1 THEN 'SINCRO' ELSE「NO SINCRO 'END狀態1, CASE Customer.rev WHEN 1 THEN '啓' ELSE '不轉' END狀態2 從客戶, 合同 WHERE Customer.contract_number = Contract.contract_number UNION ALL SELECT HandCo.contract_number, HandCo。名稱, HandCo.last, HandCo.phone, HandCo.des, CASE HandCon.tradit WHEN 1 THEN'Tradit'ELSE NULL END St​​atus3 FROM HandContract; –

0

也許與字符串連接?

SELECT cu.contract_number, cu.name, cu.last, cu.phone, co.desc, 
     ((CASE co.sinc WHEN 1 THEN 'Sincro' ELSE 'No sincro' END) || '-' || 
     (CASE cu.rev WHEN 1 THEN 'Rev' ELSE 'No Rev' END) 
     ) as Status 
FROM Customer cu JOIN 
    Contract co 
    ON co.?? = cu.??; 

注:我從FROM條款刪除,。我真的懷疑這是這個查詢的意圖。您需要在ON子句中輸入正確的JOIN條件,用適當的列名稱替換??

相關問題