【问题标题】:SQL Server query with case in select statement with multiple INNER JOINS带有多个 INNER JOINS 的 select 语句中带有 case 的 SQL Server 查询
【发布时间】:2015-09-04 00:52:04
【问题描述】:

我有一个查询返回一组有关项目的数据。但问题是某些项目没有有效的货币 ID。

所以我正在尝试构建一个查询,如果货币 id 为 0,则使用 id 140 代替。这是我目前所拥有的,但如果货币 id 为 0,则不会返回任何结果。

   SELECT *,
   CASE
   WHEN p.currencyid=0 THEN 140
   END
   FROM projects AS p 
   INNER JOIN businesssectors AS bs ON bs.businesssectorid=p.businesssectorid 
   INNER JOIN currencies AS c ON c.currencyid=p.currencyid
   INNER JOIN plants AS pl ON p.plantid=pl.plantid 
   WHERE p.projectid='195'

【问题讨论】:

  • 我相信你错过了其他部分
  • @apomene 谢谢,我用这个 case 语句试过了 CASE WHEN p.currencyid=0 THEN 140 ELSE p.currencyid END 仍然没有得到任何回报

标签: sql-server tsql select case inner-join


【解决方案1】:

试试这个,应该可以的

   SELECT *,
   CASE
   WHEN p.currencyid=0 THEN 140 ELSE p.currencyid 
   END
   FROM projects AS p 
   INNER JOIN businesssectors AS bs ON bs.businesssectorid=p.businesssectorid 
   INNER JOIN plants AS pl ON p.plantid=pl.plantid 
   LEFT OUTER JOIN currencies AS c ON c.currencyid=p.currencyid
   WHERE p.projectid='195'

【讨论】:

  • 不确定是否需要在 p.currencyid 不为 0 时返回货币值。如果是,只需在 case 表达式中添加 else 即可。
猜你喜欢
  • 2018-09-13
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
相关资源
最近更新 更多