【问题标题】: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 when 和 like 来选择从哪个表返回哪个列。
我在下面提供了一个粗略的示例,因为我没有详细信息。在我的粗略示例中,我还使用了左外连接,另一种连接类型可能更适合您的情况。
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]