【问题标题】:Third column conditional upon first two columns (SQL)第三列以前两列为条件(SQL)
【发布时间】:2020-08-11 14:37:14
【问题描述】:

在 SQLite 的 DB 浏览器中,如果我有两列 results1 和 results2,每列都可以有“通过”或“失败”(或空白(在列中,我如何创建名为 results_final 的第三列)如果 results1 和 results2 在同一行中都有“通过”,则返回“通过”,如果是任何其他组合,则返回“失败”?所以基本上尝试使用 CASE WHEN 但条件在两个不同的列中。这可能吗?在 Excel 中,我可以只做一个 =IF(AND(pass,pass), "pass", "fail") 之类的公式,但我可以在这里做什么?

【问题讨论】:

    标签: sql sqlite select case db-browser-sqlite


    【解决方案1】:

    您可以像这样使用case 表达式:

    select 
        t.*, 
        case when result1 = 'pass' and result2 = 'pass' 
            then 'pass' 
            else 'fail' 
        end result3
    from mytable t
    

    尚不清楚您是否真的要创建一个新列来保存该值;我实际上不建议存储该信息。您可以为此使用视图或生成的虚拟列:

    alter table add column column3 text as (
        case when result1 = 'pass' and result2 = 'pass' 
            then 'pass' 
            else 'fail' 
        end) virtual
    

    【讨论】:

    • 我不确定这是否在这里有效,因为该符号与“通常”的 SQL 略有不同。我认为在 CASE 之后有一个表达式(在 SQLite 的 DB 浏览器中)所以不知道如何编写它? sqlitetutorial.net/sqlite-case
    • @bz_2020:CASE 表达式有两种表达方式。您正在展示的短版和我使用的长版。这是标准 SQL,应该可以在 SQLite 中正常工作。
    • 谢谢!我以为问题出在 CASE 中,但我的逗号放错了位置 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多