當前位置:首頁 » 編程語言 » sqlcase多欄位
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlcase多欄位

發布時間: 2022-04-20 14:39:27

『壹』 sql中case,when,then,else的用法是什麼

用法:

1、第一種寫法:

復制代碼

SELECT

s.s_id,

s.s_name,

s.s_sex,

CASE

WHEN s.s_sex = '1' THEN '男'

WHEN s.s_sex = '2' THEN '女'

ELSE '其他'

END as sex,

s.s_age,

s.class_id

FROM

t_b_student s

WHERE

1 = 1

2、第二種寫法

SELECT

s.s_id,

s.s_name,

s.s_sex,

CASE s.s_sex

WHEN '1' THEN '男'

WHEN '2' THEN '女'

ELSE '其他'

END as sex,

s.s_age,

s.class_id

FROM

t_b_student s

WHERE

1 = 1

兩個運行結果一樣:

有一個需要注意的問題,Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。

(1)sqlcase多欄位擴展閱讀:

Case具有兩種格式:簡單Case函數和Case搜索函數。

簡單Case函數:

CASE sex

WHEN『1』THEN『男』

WHEN『0』THEN『女』

ELSE『其他』END

Case搜索函數:

CASE WHEN sex=『1』THEN『男』

WHEN sex=『0』THEN『女』

ELSE『其他』END

顯然,簡單Case函數生在簡潔,但是它只適用於這種單欄位的單值比較,而Case搜索函數的優點在於適用於所有比較的情況。

還有一個需要注意的問題,Case函數在滿足了某個符合條件後,剩下的條件將會被自動忽略,因此,即使滿足多個條件,執行過程中也只認第一個條件。

在使用CASE WHEN時,可以把它當作一個沒有欄位名的欄位,欄位值根據條件確認,在需要使用欄位名時可以是用as來定義別名。

『貳』 SQL CASE可不可以查詢多個欄位

種查詢SQL, 利用union獲bc各自統計結, 再統計整合終結: select sum(d.b_cnt) + sum(d.c_cnt) as total_cnt, sum(d.b_cnt) as b_cnt, case when sum(d.b_cnt) = 0 then '' else d.val end as b_label, sum(d.c_cnt) as c_cnt, case when sum(d.c_cnt) = 0 then '' else d.val end as c_label from( select b as val, count(b) as b_cnt, 0 as c_cnt from A group by b union all select c, 0, count(c) as c_cnt from A group by c ) d group by d.val SQL Serer測試結(欄位序變化), 圖" class="illustration_alink"> total_cnt總數, b_labelb欄值, b_cntb欄數, c_labec欄值, c_cntc欄數.   結跟欄位否整型關, 統計記錄現數.

『叄』 sql case when多條件篩選

這個不需要case when ,只要寫where 子句就可以了

select*from表格名where(年齡=15and性別='女')or(年齡=20and性別='男');

『肆』 mysql中case when 多個欄位同時滿足條件判斷

case when c = 1 then 「單一」
when c = 0 and int(a)+int(b)>=1 then 「邀請」end

『伍』 SQL CASE語句

不要使用when null來判斷,等於NULL的時候判斷不出來的
你可以當欄位等於NULL時給一個默認值。比如
(CASE isnull(field,'')
WHEN '1' THEN '1'
WHEN '' THEN '1'
ELSE '0' END
) AS field
或者在when後邊寫條件
case when field = '1' then '1' when field is null then '1' else '0' end as field

『陸』 求詳解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 修改欄位值

剛才您已經發過一次這個帖子了,那個then的後邊只能跟著一個值,而不是一個等式。
select case t.dl when '0000' then '未分類' else t.tdl end,
t.tdl lx,
count(p.id) zrs
from (select distinct(code1||code2) dl,title1||title2 tdl from sys_certificate t where t.bigclass='02') t left join sys_drivers p on t.dl=substr(p.property,3,4) and groupid=128
group by (case t.dl when '0000' then '未分類' else t.tdl end),
t.tdl
order by t.dl asc

『捌』 SQL case 用法 求教!!!

把case 後邊的 「年齡」 去掉就可以了。
case 後邊有欄位的話,when只能去對比字元串,不能寫成條件表達式 case 年齡 when 20 then ...這樣

『玖』 SQL查詢語句中如何用case when 返回多個欄位

一個欄位一個欄位的判斷
就是a和b都不等於0返回的話
select
table.*,
(case
when
a<>0
and
b<>0
then
c%a
else
0
end)
as
e,
(case
when
a<>0
and
b<>0
then
(c%a)%b
else
0
end)
as
d
from
table
where
……
如果是其他情況,再添加case
when條件

『拾』 如何用case/when語句實現不同條件下更新同一張數據表的不同欄位

可使用case when來實現這個條件,需要嵌套子查詢語句,sql語句代碼示例如下: