sql - 用于遍历数据的 SQL 查询
问题描述
我有一张如下所述的桌子
COLUMN_NAME OLD_VALUE NEW_VALUE
:----- :------- :------------
FRST_NM MICHAEL TEST
LST_NM DAVIS TEST_IQVIA
MID_NM AUSTIN TEST
我已经使用了下面提到的 SQL
select
( case when COLUMN_NAME = 'FRST_NM' then NVL2 (new_value , new_value , old_value ) else NULL end ) FRST_NM,
( case when COLUMN_NAME = 'LST_NM' then NVL2 (new_value , new_value , old_value ) else NULL end ) LST_NM,
( case when COLUMN_NAME = 'MID_NM' then NVL2 (new_value , new_value , old_value ) else NULL end ) MID_NM
from TEST_TABLE
获得如下所述的输出。
FRST_NM LST_NM MID_NM
:------- :-------- :----------
TEST NULL NULL
NULL TEST_IQVIA NULL
NULL NULL TEST
预期的输出将是
FRST_NM LST_NM MID_NM
:------ :------- :-------
TEST TEST_IQVIA TEST
谁能指导我
解决方案
只需使用聚合:
select max(case when COLUMN_NAME = 'FRST_NM' then coalesce(new_value, old_value) end) as FRST_NM,
max(case when COLUMN_NAME = 'LST_NM' then coalesce(new_value, old_value ) end) as LST_NM,
max(case when COLUMN_NAME = 'MID_NM' then coalesce(new_value, old_value) end) as MID_NM
from TEST_TABLE;
笔记:
nvl2()
在这里不合适。尽管您可以使用nvl()
,但您不妨使用 SQL 标准函数coalesce()
。else null
是多余的——NULL
是默认值。
推荐阅读
- scala - 断言 RDD 未排序
- android - 如何从 Adobe Xd 文件参考设计 Android UI xml 文件?
- ksqldb - ksqldb cli 无法终止查询:等待命令主题使用者处理命令主题时超时
- php - 通过 actions() 在 Yii2 控制器中指定动作的请求动词
- bash - 动态设置 KUBECONFIG 环境变量
- c - 通过使用带有或不带有 & 符号的 scanf 来消除分段错误
- xaml - Xamarin Forms:无法更新 UI 上的自定义控件
- c - 无法在 ssl/tls 中获取客户端证书
- highcharts - 用情节带或区域突出周末
- java - 如何删除 .camel 子文件夹中的旧文件?