sql – 如何找出哪个列/值COALESCE操作符成功选择?

前端之家收集整理的这篇文章主要介绍了sql – 如何找出哪个列/值COALESCE操作符成功选择?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一张表,我希望找到第一个非空值从3(并且只有3)列为每个ID从Col1开始,然后到Col2然后到Col3

注意:Col3永远不会为空

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

获取每个值的正确列,我使用以下sql选择

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

它返回以下并且工作正常

  1. ID Col
  2. -------------
  3. 1 A
  4. 2 C
  5. 3 X
  6. 4 D

我想要的是返回的第三列,指出合并成功的列.以下是我想制作的结果集:

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

解决方法

也许这会奏效吗
  1. SELECT ID,Col3) AS Col,CASE COALESCE(Col1,Col3)
  2. WHEN Col1 THEN 'Col1'
  3. WHEN Col2 THEN 'Col2'
  4. WHEN Col3 THEN 'Col3'
  5. ELSE 'Unknown'
  6. END AS Source
  7. FROM MyTable

猜你在找的MsSQL相关文章