【问题标题】:If value in Field1 is null, return value from Field2, otherwise Return String如果 Field1 中的值为 null,则从 Field2 返回值,否则返回 String
【发布时间】:2019-02-27 20:43:18
【问题描述】:

虽然这看起来很简单,但我无法得到它,也无法通过在这里搜索找到我需要的东西。我需要在构建器中完成此操作,或者在我的 SQL 代码中完成,对于查询已经在执行的操作,这已经是一段非常冗长的代码。这是问题的基础:

字段:ItemID | CustomID

如果CustomID 中有值,我想用字符串覆盖该记录的ItemID 值:"CK"+CustomID

如果该记录的CustomID 字段为空,则保留原始ItemID

然后我还需要该字段的值用于从链接表中提取正确的数据。目前,它将为后续字段提取原始 ItemID 的值,而不是替换 ItemID 的字符串 "CK+CustomID" 值。

我认为在需要使用该值从查找表中收集后续字段之前,可能需要一个独立的子查询来识别该字段的值。

我愿意使用我的查询生成器生成的 SQL 代码,但我不是最擅长仅使用代码的。

感谢您的帮助!

【问题讨论】:

    标签: sql ms-access null iif


    【解决方案1】:

    如果没有看到表或链接表的内容示例,也不知道其中任何一个表的名称,我建议使用以下示例代码:

    select * 
    from yourlinkedtable t inner join
    (
        select iif(t.customid is null, t.itemid, 'CK' & t.customid) as id
        from yourtable t
    ) q 
    on t.itemid = q.id
    

    这里,yourtable 代表包含 ItemIDCustomID 字段的表,yourlinkedtable 代表您希望与前缀 ItemID 匹配的表。

    【讨论】:

    • 您好,Lee Mac,感谢您的帮助。我的想法是正确的,并且与您提出的解决方案非常相似。今天稍微退后一步后,我能够得到我需要的东西。我使用子查询和您的逻辑实质上使用更正的 ItemID 重新创建表。然后在主查询中,我只是引用了该子查询来驱动我需要的查找数据。奇迹般有效!再次感谢。
    • 不客气 - 我很高兴听到您能够根据我的建议开发出可行的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多