下面的SQL執行後如圖一,如何可以變成像圖二一樣多加一欄TTYPE的欄位?
SELECT A.IT5,A.IT6,A.IT7
A.IT63,A.IT57,A.IT53,A.IT34
FROM big AS A
LEFT JOIN
(SELECT 1 AS TTYPE,IT5,IT6,IT7
FROM big
WHERE IT88='TRUE' AND IT8='TRUE') B ON A.IT9=B.IT9
LEFT JOIN
(SELECT 2 AS TTYPE,IT5,IT6,IT7
FROM big
WHERE IT88='TRUE' AND IT9='TRUE') C ON A.IT9=C.IT9
LEFT JOIN
(SELECT 3 AS TTYPE,IT5,IT6,IT7
FROM big
WHERE IT88='TRUE' AND IT10='TRUE') D ON A.IT9=D.IT9
WHERE A.IT88='TRUE'
你到底跟誰JOIN了 XD
都是big這個table,只是where 條件不同,ttype欄位要辨別是哪個狀態要出報表用
我的想法跟pcw大大差不多,
資料表設計好不好這就不討論了,
不過你的需求應該可以透過以下方式取得
SELECT (CASE
WHEN IT8='TRUE' THEN 1
WHEN IT9='TRUE' THEN 2
WHEN IT10='TRUE' THEN 3
END) AS TTYPE,
IT5, IT6, IT7
FROM big
WHERE IT88='TRUE'
另外你的IT88既然已經放在WHERE的篩選條件中,
前面就不用判斷IT88了.
謝謝!學到技巧
有空把所有的SQL語法再複習一遍,
網路查一下就可以查到有人整理過的,
這算是基本的語法而已.
您提供的sql指令,請問該如何將1轉換為字串?如1 變成支出,2變成收入,3變成不處理,4變成處理?
SELECT (CASE
WHEN IT8='TRUE' THEN N'支出'
WHEN IT9='TRUE' THEN N'收入'
WHEN IT10='TRUE' THEN N'不處理'
END) AS TTYPE,
IT5, IT6, IT7
FROM big
WHERE IT88='TRUE'
'(字串)'
前面加個N是以防編碼方式跑出亂碼
參考 https://www.itread01.com/p/1399893.html
hheyjen
備註一下, N是針對MS-SQL,
如果是MySql不能加N,
每個SQL的用法會有些差別,
下次提問最好先說一下你用的是什麼SQL.