数据集如何写出如果year字段为2021,取得是一条数据,year不等于2021,则取得是另外一条数

数据集如何写出如果year字段为2021,取得是一条数据,year字段不等于2021,则取得是另外一条数,这个好实现吗image.png

image.png

用户K0035705 发布于 2021-12-31 16:43 (编辑于 2021-12-31 17:48)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
1
SrafyLv5见习互助
发布于2021-12-31 16:52(编辑于 2022-1-4 10:22)

where 1=1 ${if(year==2021,"如果是2021的条件","不是2021的条件")}

——--------------------------------------

--project_code的a项目和其他正常项目;year!=2021时,取project_code的b项目和其他正常项目

WHERE

(case 

when year = 2021 

then project_code = "A" AND project_code = "其他正常项目" 

else project_code = "B" AND project_code = "其他正常项目" 

end)

-------------------------------------------------------------

sqlserver where后面的case when好像只能这样查

E]KNF38064~~)[W1CSZV`JC.png

  • 用户K0035705 用户K0035705(提问者) 不要参数,就是普通的sql语句
    2021-12-31 16:52 
  • Srafy Srafy 回复 用户K0035705(提问者) 补充了
    2021-12-31 17:08 
  • Srafy Srafy 回复 用户K0035705(提问者) 2021的时候project_code !=\'B\' 不是2021的时候 project_code !=\'A\' ?你自己看下数据逻辑怎么补充
    2021-12-31 17:10 
  • Srafy Srafy 回复 用户K0035705(提问者) 你可以用 != 或者 like 模糊搜索 数据如何存储的我不清楚具体逻辑
    2021-12-31 17:12 
  • 用户K0035705 用户K0035705(提问者) 回复 Srafy 这个是啥问题啊,我截了个图
    2021-12-31 17:37 
最佳回答
1
卡其鱼Lv6初级互助
发布于2021-12-31 16:46

where 条件里写if语句啊,明确条件就行

最佳回答
1
CD20160914Lv8专家互助
发布于2021-12-31 16:53(编辑于 2021-12-31 17:09)

你是要限制条件,还是取字段。比如参数为2021的时候,取A字段,不是2021取B字段?

还是说你参数为2021的时候,,你要where  a字段='777t'  否则  where b字段='777t'

截图。或者上模板说一下。

where 1=1

${if(len(year_a)=2021,"and project_code in('a','1','2','3','4')","and project_code in('b','1','2','3','4')")}

  • 用户K0035705 用户K0035705(提问者) 后者,就是其他项目的数据都是正常取,就两个项目不一样,就是说year=2021时,取project_code的a项目和其他正常项目;year!=2021时,取project_code的b项目和其他正常项目
    2021-12-31 17:00 
  • 用户K0035705 用户K0035705(提问者) 图不方便发,都是数据
    2021-12-31 17:01 
  • CD20160914 CD20160914 回复 用户K0035705(提问者) 其他正常项目也是project_code字段吗?就是说=2021的时候,,project_code not in(\'b\')?
    2021-12-31 17:02 
  • 用户K0035705 用户K0035705(提问者) 回复 CD20160914 对,我发了个图
    2021-12-31 17:03 
  • CD20160914 CD20160914 回复 用户K0035705(提问者) 改了sql了。你看一下。
    2021-12-31 17:09 
最佳回答
0
奈我何Lv5见习互助
发布于2021-12-31 17:05

什么数据库?

  • 用户K0035705 用户K0035705(提问者) sql server
    2021-12-31 17:07 
  • 奈我何 奈我何 回复 用户K0035705(提问者) if (\'${year}\'=\'2021\') begin select 1 end else if(\'${year}\'!=\'2021\') begin select 2 end
    2021-12-31 17:10 
  • 奈我何 奈我何 回复 用户K0035705(提问者) 解决了没
    2021-12-31 17:18 
  • 用户K0035705 用户K0035705(提问者) 回复 奈我何 不让写参数
    2021-12-31 17:19 
最佳回答
0
即将拥有腹肌Lv2见习互助
发布于2022-1-4 11:15

试试这个

case when  解决呢?

  • 用户K0035705 用户K0035705(提问者) where 里面用case when 吗
    2022-01-04 17:44 
  • 即将拥有腹肌 即将拥有腹肌 回复 用户K0035705(提问者) 不需要用where, case when A.NAME=\'测试\'then PASSWORD else \'\' end A.NAME字段等于测试,返回name值为测试的password字段内容,否则返回空。 你带入一下 case when year=\'2021\'then yeartest else test1 end 等于2021返回yeartest字段值,否则返回teat1字段值。看不懂的话百度一下case when的用法
    2022-01-05 10:42 
  • 6关注人数
  • 885浏览人数
  • 最后回答于:2022-1-4 11:15
    请选择关闭问题的原因
    确定 取消
    返回顶部