当前位置: 首页 > 面试题库 >

如何确定COALESCE运算符成功选择了哪个列/值?

艾善
2023-03-14
问题内容

我有一个表,希望从每个ID的3(只有3)列中找到第一个非空值,从Col1开始,然后到Col2,再到Col3

注意:Col3为NEVER NULL

ID    Col1    Col2    Col3
------------------------------
1     A       B       X
2     NULL    C       X
3     NULL    NULL    X
4     D       NULL    X

为了获得每个值的正确列,我使用以下SQL Select

SELECT    ID,
          COALESCE(Col1, Col2, Col3) AS Col
FROM      MyTable

这将返回以下内容并且可以正常工作

ID    Col
-------------
1     A
2     C
3     X
4     D

我想要的是返回的第三列,指示合并成功的那列。以下是我希望产生的结果集:

ID    Col    Source
-----------------------
1     A      Col1
2     C      Col2
3     X      Col3
4     D      Col1

问题答案:

也许这行得通吗?

SELECT    ID,
          COALESCE(Col1, Col2, Col3) AS Col,
          CASE COALESCE(Col1, Col2, Col3)
              WHEN Col1 THEN 'Col1'
              WHEN Col2 THEN 'Col2'
              WHEN Col3 THEN 'Col3'
              ELSE 'Unknown'
          END AS Source
FROM      MyTable


 类似资料:
  • 我知道,在Java中的事件驱动程序中,可以找出是什么对象导致了事件(例如,选择了,因此会发生特定的操作)。我的问题是,如果在一个按钮组中有两个,两个按钮都添加了动作侦听器,并且您一直在从一个按钮到另一个按钮中进行选择,那么是否有可能找到以前选择的?换句话说,如果我选择了另一个,在选择当前之前,是否可以编写代码来确定之前选择了哪个? 编辑:我会更具体。我正在创建一个“虚构”的餐厅程序。在其中,我列出

  • 问题内容: 调用获取数据库后,有什么方法可以稍后输出当前所选数据库的名称?这似乎很基础,但是我在php.net或stackoverflow上找不到任何东西(所有结果都是针对“未选择数据库”)。 问题答案: 只需使用mysql_query(或更好的mysqli_query,或最好使用PDO): 附录: 关于是否应包括在其中,有很多讨论。从技术上讲,它是Oracle的保留,可以安全地删除。如果您愿意,

  • 问题内容: 假设已编写以下代码: 我试图确定已选择哪个单选按钮,然后提取用户选择的那个单选按钮的值。我该怎么做呢? 问题答案: 关键是要确保两个单选按钮共享相同的变量。然后,要知道选择了哪个变量,您只需要获取变量的值即可。 这是一个例子:

  • 我有一个表格视图中的效果列表。我创建了一个右上角的栏按钮,它可以向另一个视图控制器推送序列,这有助于创建一个新效果。现在我想将推送序列添加到表格视图单元格中,这样效果值就可以加载到添加效果视图控制器中,我可以保存编辑后的值。 问题是我可以以编程方式创建推送 segue 吗?如果不是,我可以通过准备预演传递效果?如果我尝试使用,我会遇到一个问题,即从 拖动控件不允许我创建一个推送到添加效果视图控制器

  • 在我的项目中,Apache Tomcat8.5context.xml配置如下。 我检查了这两个JAR,servlet.jar包含常规servlet api类,而Tomcat的servlet-api.jar包含这些常规servlet api类以及许多其他与servlet功能相关的类。 查询:由于运行servlet有两个jar即servlet.jar和servlet-api.jar,那么Tomcat如

  • 然后再次运行,但它也转到GPU0。 我看了相关的问题,如何选择指定的GPU来运行CUDA程序?但是命令不在CUDA 8.0 bin目录中。除了之外,我还看到其他文章引用了环境变量但这些都没有设置,我也没有找到关于如何使用它的信息。 虽然与我的问题没有直接关系,但使用我能够使应用程序在GPU1上运行,但使用不能在GPU0和1上运行。 我正在一个使用bash shell运行的系统上测试这一点,该系统在