首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >where中的sql min()

where中的sql min()
EN

Stack Overflow用户
提问于 2013-04-16 01:40:03
回答 2查看 146关注 0票数 0

我想找出那些"rsp_ver“以2.0或更多开头而不是1.0的情况。我想我可以在where子句中使用一个条件来找出子查询找到的rsp_ver代码超过"1.0“的in:

代码语言:javascript
复制
select 
  trim(INS.fst_name) || '  ' || Trim(INS.lst_name) as name,
  IDS.rin,
  RSP.unit_id,
  RSP.indv_id,
  RSP.rsp_id,
  RSP.rsp_sqnm,
  RSP.rsp_ver,
  cast(RSP.post_ts as char(16)) as Post,
  RSP.post_audit_id
from 
  dhsdb2.wvs_rsp RSP
  join dhsdb2.indv_name_srch INS on RSP.indv_id = INS.indv_id
  join dhsdb2.indv_demg_srch IDS on RSP.indv_id = IDS.indv_id
where 
  RSP.indv_id in 
    (select 
       SRSP.indv_id 
     from 
       dhsdb2.wvs_rsp SRSP 
     where 
       SRSP.indv_id = RSP.indv_id and
       SRSP.rsp_ver > '1.0')
  and rsp.clse_ts is null 
order by
  RSP.rsp_ver;

当然,这并不起作用。然后我认为我需要这个内部查询来实现min函数,但是我运行了int

EN

回答 2

Stack Overflow用户

发布于 2013-04-16 01:55:14

假设rsp_ver始终采用主要Version.Other版本信息的格式,您可以在where子句中替换嵌套的select:

代码语言:javascript
复制
RSP.indv_id in 
    (select 
       SRSP.indv_id 
     from 
       dhsdb2.wvs_rsp SRSP 
     where 
       SRSP.indv_id = RSP.indv_id and
       SRSP.rsp_ver > '1.0')

具有以下功能:

代码语言:javascript
复制
CAST(SUBSTRING(RSP.rsp_ver, 1, CHARINDEX('.', RSP.rsp_ver)-1) AS INT) >= 2

这将从rsp_var列中获取主版本部分,将其转换为INT,然后仅返回主版本为2或更高的行。

当您的版本号包含多个小数(即2.0.1)时,这比简单地将rsp_ver转换为数字值更有好处。缺点是它只检查当前形式的主要版本。

如果需要更细粒度的过滤,可以创建一个Common Table Expression,它从rsp_ver列和indv_id中选择不同的版本部分,然后连接该查询。

票数 1
EN

Stack Overflow用户

发布于 2013-04-16 01:46:53

Where子句中删除',以便将列作为number而不是字符串进行比较

代码语言:javascript
复制
select 
  trim(INS.fst_name) || '  ' || Trim(INS.lst_name) as name,
  IDS.rin,
  RSP.unit_id,
  RSP.indv_id,
  RSP.rsp_id,
  RSP.rsp_sqnm,
  RSP.rsp_ver,
  cast(RSP.post_ts as char(16)) as Post,
  RSP.post_audit_id
from 
  dhsdb2.wvs_rsp RSP
  join dhsdb2.indv_name_srch INS on RSP.indv_id = INS.indv_id
  join dhsdb2.indv_demg_srch IDS on RSP.indv_id = IDS.indv_id
where 
  RSP.indv_id in 
    (select 
       SRSP.indv_id 
     from 
       dhsdb2.wvs_rsp SRSP 
     where 
       DRSP.indv_id = RSP.indv_id and
       SRSP.rsp_ver > 1.0)
  and rsp.clse_ts is null 
order by
  RSP.rsp_ver;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16021399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档