SQL case when 語句
求總發卡數和總制卡數和發卡正式卡數、發卡臨時卡數、發卡正式卡數,制卡臨時卡數、制卡正式卡數(如Excel中所示)求詳細SQL語句。
--創建測試表
IF EXISTS (SELECT * FROM *s WHERE object_id = OBJECT_ID(N'[dbo].[TB]') AND type in (N'U'))
DROP TABLE [dbo].[TB1]
GO
CREATE TABLE [dbo].[TB1](
[卡狀態] [nvarchar] (20) NULL,
[卡類型] [nvarchar](50) NULL,
) ON [PRIMARY]
GO
--插入測試數據
INSERT INTO [TB1] ([卡狀態],[卡類型])
SELECT N'發卡',N'正式卡' UNION ALL
SELECT N'發卡',N'正式卡' UNION ALL
SELECT N'發卡',N'臨式卡' UNION ALL
SELECT N'制卡',N'臨式卡' UNION ALL
SELECT N'制卡',N'正式卡'
GO
--靜態拼接行轉列(糾正簡化一下)
SELECT 卡狀態 + '數' AS 卡狀態,
COUNT(1) AS 總數 ,
SUM(CASE WHEN 卡類型 = '正式卡' THEN 1
ELSE 0
END) AS 正式卡 ,
SUM(CASE WHEN 卡類型 = '臨式卡' THEN 1
ELSE 0
END) AS 臨式卡
FROM TB1
GROUP BY 卡狀態
GO
--輸出結果:
SQL語句case when
太長了,但是看到一個問題,case when,要求返回的類型必須一直。
你看你的第一個case when語句(case when to_char(statistic_date-payrefdate>=0) and to_char(statistic_date-payrefdate<90) then sum(*e-nvl(*fee,0)) else '' end)then后邊返回的是一個求和,那么類型肯定是數字,而else分支,其他情況下居然返回了空字符串,字符型。這兩個不一致,首先就錯了。
你先改了這些吧。
mysql的casewhen語句轉oraclewhere子句條件如下:*='asdf'
oracle也有case when的語法,照辦就行,不過用在where條件中,需要有返回值的比較.這是根據你提供的語句修改,給你提供一個參考吧:where * = 'asdf' and (case when (b.i like '%0%') then true when (b.i like '%1%') and *rCode = #code# then truewhen (b.i like '%2%') and (*Dept = #dept# and #flag# = 1) then trueelse falseend) = true這是按照我的業務理解寫的where * = 'asdf' and (case when (b.i like '%0%') then 1when (b.i like '%1%') and *rCode = #code# then 2when (b.i like '%2%') and (*Dept = #dept# and #flag# = 1) then 3else 4end) = 1 -- (根據反回結果來過濾數據)。
Access 中的case when語句該怎樣寫
*函數
根據表達式的值,來返回兩部分中的其中一個。語法IIf(expr,truepart,
falsepart)IIf函數的語法含有下面這些命名參數:部分描述expr必要參數。用來判斷真偽的表達式。truepart必要參數。如果expr為
True,則返回這部分的值或表達式。falsepart必要參數。如果expr為
False,則返回這部分的值或表達式。說明由于IIf會計算truepart和
falsepart,雖然它只返回其中的一個。因此要注意到這個副作用。例如,如果falsepart產生一個被零除錯誤,那么程序就會發生錯誤,即使expr為True。select
iif(col='0','ok',iif(col='1','err1',iif(col='2','err2','err3')))ascolnamefromtable
2. Switch在Access無法使用SQL語句中的case when語句,但可以通過Switch函數實現例如:Switch(成績<60,"不及格",成績 Between 61 And 74,"中",成績
Between 75 And 88,"良",成績 Between 88 And 100,"優") AS 成績等級
可以實現對成績的值進行多分支條件判斷結構
sql 的case when 語句
case when應該是select或者是where條件的一部分,你這里,case when部分沒有在任何一個地方,而且,你這個很明顯,應該是select里面的一部分,作為查詢的一個結果列。
所以,要在from前。
還有,when后邊是沒有逗號的。
最后,還需要end關鍵字表示結束。
Select prevent_Seep,
Case when length(prevent_Seep) = 1 then '無'
When length(prevent_seep) = 2 then '有'
When length(prevent_seep) > 2 then substring(prevent_seep,2,length(prevent_seep))
end as 別名
from Table_F301(2)
轉載請注明出處華閱文章網 » casewhen語句