【问题标题】:sql conditional logic to check for a value in one or more tables sql developersql 条件逻辑检查一个或多个表中的值 sql developer
【发布时间】:2022-02-12 10:20:05
【问题描述】:

可以说,我有一个页面显示:

******* Header1 ************
ColumnA columnB  columnC    columnD
value1**V**  123       1234      12345
value1**VA**  123       1234      12345
value1**V**  123       1234      12345

现在回到 sql 开发人员。 如果您查看 colA,它的值以 V 和/或 VA 结尾。 V 和 VA 存储在 2 个不同的值中。 所以这是我现在的问题: 如何从其各自的表中检索其父 ID?

所以在查询中必须处理,如果 colA 以 V 结尾,然后转到 V 表并获取其对应的值(在我们的例子中,它的 value1V,来自 V 表的 id)。 这种情况可能吗? 如果是这样,怎么做? 非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: sql if-statement package conditional-statements database-administration


    【解决方案1】:

    您的问题缺少很多细节,但如果我对您的理解正确,我认为您希望根据 ColumnA 是包含“VA”还是仅包含“V”从两个表之一返回一个值。

    在这种情况下,我将加入两个表,然后在 select 子句中,使用 case whenlike 来选择从哪个表返回哪个列。

    我在下面提供了一个粗略的示例,因为我没有详细信息。在我的粗略示例中,我还使用了左外连接,另一种连接类型可能更适合您的情况。

    SELECT [ColumnA]
    ,[ColumnB]
    ,[ColumnC]
    ,[ColumnD]
    
    ,CASE WHEN [ColumnA] LIKE '%V**' THEN V.[ColumnA] ELSE VA.[ColumnA] END AS [ParentID]
    
    
    FROM [Table] AS [A]
    
    LEFT OUTER JOIN [Table V] AS [V]
    ON A.[ColumnA] = V.[ColumnA]
    
    LEFT OUTER JOIN [Table VA] AS [VA]
    ON A.[ColumnA] = VA.[ColumnA]
    

    【讨论】:

      猜你喜欢
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多