sql語句中case語句用法
不知道你具體什么數據庫,,給出sqlserver,你上面寫的就對了,
給你寫出詳細的測試記錄吧
CREATE TABLE test(a INT,b VARCHAR(10))
INSERT INTO *
( a, b )
SELECT 1,'a'
UNION ALL
SELECT 2,'b'
UNION ALL
SELECT null,'c'---這里加了一條數據,便于你看出結果
SELECT a,b,c=(CASE WHEN ISNULL(a,'')='' THEN null ELSE b END)--注個人喜歡用isnull()函數
FROM test結果:
1 a a
2 b b
NULL c null
數據庫sql中的case語句~
set 不能連續的賦值。
case 語句也有錯誤。可以改為:declare @grade int,@result varchar(10)set @grade=78set @result= case when @grade<60 then '不及格' when @grade>=60 and @grade <69 then '及格' when @grade>=70 and @grade<79 then '中等' when @grade>=80 and @grade<89 then '良好' when @grade>=90 and @grade<=100 then '優秀' else 'wrong'endselect @result。
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)。
SQL語句中CASE有哪些用法
在寫SQL語句時,或者是在PL/SQL中,經常需要在一個SQL語句中,根據不同的條件,有多種處理方法,如簡單例子:出售一種商品時,單價不同,折扣不同,對這種需求的處理,如果分情況處理,將會很麻煩,如果用Case語句,就可以在一條SQL語句中得到想要的結果。
首先看一下,Case的語法: case when 條件A Then 結果A When 條件B 結果B 。
else 結果N end 和Decode 不同的是,Decode 只能針對固定的值,而 Case 可以用不是固定值,需是一個條件。 現在有以下的需求,有一個字符串,最后的兩位可能是 '/R' ,'/T' 另外,有的后兩位沒有前面的'/R' ,'/T' ,現在針對不同的需要,要將 '/R' ,'/T' 取掉,沒有 '/R' ,'/T', 就不做處理。
具體字符串如下: A01JCL-A01JCL/GF117F0001TR/R SQL寫法可以如下: select (case when instr(code, '/R') > 0 then substr(code, 1, instr(code, '/R') - 1) when instr(code, '/T') > 0 then substr(code, 1, instr(code, '/T') - 1) else '0' end) from table_A t ; 使用Case時,要用括號括起來。
求詳解SQL的CASE函數語句含義
select 課程,
sum(case when 姓名='李四' then 成績 end)as '李四',
sum(case when 姓名='張三' then 成績 end)as '張三'
from table_2
group by 課程
--意思是:
查詢結果按照“課程”、“李四的成績”、“張三的成績”顯示出來,
其中“李四的成績”計算方法是:
當姓名=李四,那么就計算將該行的成績按照課程進行分類加總
“張三的成績”計算方法是:
當姓名=張三,那么就計算將該行的成績按照課程進行分類加總
select 姓名,
sum(case when 課程='語文' then 成績 end)as '語文',
sum(case when 課程='數學' then 成績 end)as '數學',
sum(case when 課程='英語' then 成績 end)as '英語'
from table_2
group by 姓名
--類似的意思是:
查詢結果按照“姓名”、“語文”、“數學”、“英語”按照姓名進行加總各科成績顯示出來,
其中“語文”成績計算方法是:
當科目=語文,那么就計算將該行的成績按照姓名進行分類加總
“數學”成績計算方法是:
當科目=數學,那么就計算將該行的成績按照姓名進行分類加總
“英語”成績計算方法是:
當科目=英語,那么就計算將該行的成績按照姓名進行分類加總
case when 條件 then 表達式1 else 表達式2 end
表示:當條件成立,則返回表達式1,否則返回表達式2.
因此:sum(case when 姓名='李四' then 成績 end)as '李四', 表示如果姓名為李四,則加總計算成績,列名為‘李四’
類似的樓主可以自己理解了。
SQL語句中Case 的用法
不用CASE WHEN 的做法。源代碼如下:
string sql="select * from CONTACTPERSON ,CUSTOMER where CONTACTPERSONID='"+strContactid+"' and *ERID=*ERID";
DataSet ds=new DataSet();
ds=*ommon(sql);
if(*[0].Rows[0]["CONTACTPERSONSEX"].ToString()=="0")
{
*[0].Rows[0]["CONTACTPERSONSEX"]="男";
}
else
{
*[0].Rows[0]["CONTACTPERSONSEX"]="女";
}
使用CASE WHEN做法。
string sql="select CUSTOMER.*,*TPERSONNAME,*TPERSONBIRTHDAY,*TPERSONPOSITION,*TPERSONDEPTNAME,";
sql+="*ONE,*,*,*CE,*DE,*Y,*,";
sql+="*OR,";
sql+="case when *TPERSONSEX = '0'then '男' when *TPERSONSEX= '1' then '女' end as CONTACTPERSONSEX from CUSTOMER ,CONTACTPERSON where CONTACTPERSONID='"+strContactid+"' and *ERID=*ERID";
可以看出這樣明顯加長了,SQL語句,這樣做有什么好處呢?不太清楚,可能會提高效率吧。大家的看法呢?
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
--輸出結果: