首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL-Case语句/也许循环可以工作?

SQL-Case语句/也许循环可以工作?
EN

Stack Overflow用户
提问于 2020-04-15 19:27:41
回答 1查看 35关注 0票数 1

新手程序员在这里,所以任何建议都是非常感谢。

编辑:我有一个包含数千个正在进行的项目的表格。每个项目至少有10个不同的日期/里程碑(记录为日期,因此是date1、date2等等)。我需要创建一个计算字段,根据该项目的最大日期(基于所有日期列),我必须在项目中的特定阶段设置它(请参阅阶段列--这是我试图用代码生成的计算字段)。细目如下:

并不是特定阶段的所有日期都可用。例如,在项目#1中,填充的是date1,而不是date2或date3,因此这表示该项目仍在Stage1中。如果还填充了date2或date3,则项目仍为Stage1,因为date4、date5、date6、date7、date8、date9、date10都为空。

因此,我在select语句中编写case语句,但它变得有点复杂。以下是我为阶段2起草的内容:

代码语言:javascript
运行
AI代码解释
复制
SELECT *
    FROM datatable
    CASE WHEN date5 >= date4 
          AND date5>date3 
          AND date5>date2 
          AND date5>date1 
          AND date6=NULL 
          AND date7=NULL 
          AND date8=NULL 
          AND date9=NULL 
          AND date10=NULL 
     THEN 'Stage2'

这只是第二阶段,我还没有写出其他的阶段。有没有更简单的方法可以做到这一点?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-04-15 20:52:14

您似乎希望根据行中设置的最后一个日期列来设置阶段。当CASE表达式中的第一个匹配项获胜时,这将是:

代码语言:javascript
运行
AI代码解释
复制
SELECT t.*,
  CASE
    WHEN date10 IS NOT NULL THEN 'Stage5'
    WHEN date9 IS NOT NULL THEN 'Stage4'
    WHEN date8 IS NOT NULL THEN 'Stage4'
    WHEN date7 IS NOT NULL THEN 'Stage3'
    WHEN date6 IS NOT NULL THEN 'Stage3'
    WHEN date5 IS NOT NULL THEN 'Stage2'
    WHEN date4 IS NOT NULL THEN 'Stage2'
    WHEN date3 IS NOT NULL THEN 'Stage1'
    WHEN date2 IS NOT NULL THEN 'Stage1'
    WHEN date1 IS NOT NULL THEN 'Stage1'
    ELSE 'Stage0'
  END AS stage
FROM datatable t
ORDER BY project#;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61237044

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档