如何基于其他列中的数据从列中选择数据并进行转置?

巴维什·多迪亚(Bhavesh Dodia)

我有一个业务场景,我试图根据另一个列的值选择列中的数据,然后将其作为单个记录转置。

我的资料:

MEDIUM     MEDIUM_DETAIL    VALUE
PHN        HOME             7843898789
PHN        WORK             8979909890
PHN        MOBILE           9899876776
EML        PRIMARY          [email protected]
EML        ALTERNATE        [email protected]

要求是根据MEDIUM_DETAIL值将PHN和EML显示为两列。

如果MEDIUM ='EML',请首先检查MEDIUM_DETAIL ='PRIMARY'并使用其值。如果其为NULL,则继续检查“ ALTERNATE”并使用其值。如果两者都为null,则在EML列中输出NULL。

在MEDIUM ='PHN'中,首先检查MEDIUM_DETAIL ='HOME'。如果有值,请使用它。如果它为NULL,则继续检查“ WORK”和“ MOBILE”。如果所有值均为空,则输出NULL。

因此,根据上述示例,我的输出应如下所示:

EML              PHN
[email protected]      7843898789

我尝试使用max(decode)...进行转置,甚至使用PIVOT,但是这些技术需要某种聚合,并且无法提供所需的结果。

关于如何进行此操作有什么建议吗?

蒂姆·比格莱森(Tim Biegeleisen)

这只是一个枢轴查询:

SELECT
    COALESCE(MAX(CASE WHEN MEDIUM = 'EML' AND MEDIUM_DETAIL = 'PRIMARY'
                      THEN VALUE END),
             MAX(CASE WHEN MEDIUM = 'EML' AND MEDIUM_DETAIL = 'ALTERNATE'
                      THEN VALUE END)) AS EML,
    COALESCE(MAX(CASE WHEN MEDIUM = 'PHN' AND MEDIUM_DETAIL = 'HOME'
                      THEN VALUE END),
             MAX(CASE WHEN MEDIUM = 'PHN' AND MEDIUM_DETAIL = 'WORK'
                      THEN VALUE END),
             MAX(CASE WHEN MEDIUM = 'PHN' AND MEDIUM_DETAIL = 'MOBILE'
                      THEN VALUE END)) AS PHN
FROM yourTable;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从数据框中的转置数据中选择列

如何根据其他表中的其他关系从 1 列中选择 2 个数据

如果默认列中的行是 NaN,如何从数据框中的其他列中选择行?

根据其他列在数据库列上进行转置

如何基于熊猫数据框中的其他列进行组合

按列分组并从熊猫数据框中的其他列中选择特定值

在数据框中,从其他列中选择最易变的列

基于名称列转置数据框

基于主键从其他列中的数据创建新列

如何在Pandas数据框中的其他列中填充基于新列的值

在Rails中如何从多个表中选择其他列

如何基于其他数据帧中的信息减去R个数据帧列?

将行转置为列,但我只是从一组数据中选择需要转置的元素

基于其他列中数据的列表中单词的频率

R中的Wordcloud:基于其他列中的数据的颜色

如何基于其他列的排列在数据框中创建新列?

如何基于熊猫数据框中的其他列值更新“余额”列

如何基于多列中的字符串匹配在Pandas数据框中选择行

如何基于在特定列中搜索数据来在Pandas Dataframe中选择一行

如何从基于其他行和列值的列中选择一个值?

如何基于列值创建其他行或数据框

基于列值的其他表中的SQL SELECT数据

如何按R中的特定列转置数据帧

如何从基于其他3个表的表中选择数据?

如何根据其他列的内容选择数据框中的特定数据?

如何基于R数据帧或数据表中其他列中的值将值分配给列

R中序列数据的数据转换:连接一列基于其他列的数据

基于python中的键将键值数据从数据帧转置到列

基于其他数据框中的列中的值来匹配数据框中的列