使用case when動態增刪sql查詢條件

2021-10-07 17:52:01 字數 865 閱讀 2613

用帆軟報表直接寫乙份報表,要求如下:

查詢條件包括工單號、錄入員工號以及測試時間

工單號和錄入員工號為可選條件,勾選並輸入才會進行篩選

測試時間為必填條件,查詢該事件段內資料

這裡條件是根據傳入引數動態變化的,也意味著sql的查詢也要跟著動態變化。以前寫web都是通過相關框架進行查詢,比如使用if標籤,很少碰到直接使用sql的情況。剛開始也是想用if完成的,後來看到了case when,嘗試一下用case when進行查詢條件的增刪改。

使用的是帆軟報表,查詢**如下

where

time

between

'$'and

'$'and

case

when

'$'=

'true'

then vc_operator

when

'$'=

'false'

then

'$'end

='$'

andcase

when

'$'=

'true'

then vc_workorder

when

'$'=

'false'

then

'$'end

='$'

結構如下

case

when 勾選 then 表中值

andwhen 不勾選 then 輸入值

end=輸入值

也就是說勾選的情況下用表中值與輸入值做對比,該查詢條件起作用,不勾選的情況下用輸入值與輸入值做比較,結果必定相等,該查詢條件效果上就沒作用了。也就達到了需要的結果。

使用case when的心得

今天看到了這樣乙個sql語句 select top 100 from test order by case when expire date getdate then 0 else 1 end gold desc,expire date desc 剛開始我想這個sql語句最多兩個結果 1 selec...

case when語句的使用

用一條sql語句將下面scales表內的資料,查詢為圖二形式 圖一 圖二 mysql select year 年,sum case when month 1 then scale else 0 end 一月,sum case when month 2 then scale else 0 end 二月...

利用case when進行sql動態排序

乙個sql動態排序的問題,弄了我很久很久。就是無法解決。結果在網上找了一段資源幫我解決。如下 sql排序方法,exec法和case when法 在日常的報表中常用到排序,有些是多字段的公升,降序,一般有兩種方法,如下所示 create table tmp row int,id nvarchar 10...