關於CASE WHEN的多條件彙總問題

2022-01-12 10:16:37 字數 1121 閱讀 2459

問題:

--建立測試表

if exists (select * from sys.objects where object_id = object_id(n'

[dbo].[tb]

') and type in (n'u'

))drop table [dbo].[tb1]

gocreate 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  卡狀態 + '數'

, count(

1) as 總數 ,

sum(case when 卡型別 = '

正式卡' then 1

else

0end) as 正式卡 ,

sum(case when 卡型別 = '

臨式卡' then 1

else

0end) as 臨式卡

from tb1

group by 卡狀態

巧用case when 解決多條件模糊查詢問題

我們在進行專案開發中,經常會遇到多條件模糊查詢的需求。對此,我們常見的解決方案有兩種 一是在程式端拼接sql字串,根據是否選擇了某個條件,構造相應的sql字串 二是在資料庫的儲存過程中使用動態的sql語句。其本質也是拼接sql字串,不過是從程式端轉移到資料庫端而已。這兩種方式的缺點是顯而易見的 一是...

多條件游標更新 變CASE WHEN更新法提高速度

定義個結構體陣列 type ty parmeter is record v hezuotype number 1 v comefrom varchar2 50 v regchannel varchar2 50 v newchannel nvarchar2 30 type ty parmeter ta...

adodataset locate的多條件定位

tadoquery,tadodataset的locate功能相信大家都經常用了 with adoquery do begin if locate orders zhuang1 vararrayof vorder,vname then begin end end 可能大家有時候也會發現它有不靈的時候,...