重命名值输出并将值合并到 SQL 中的一列中

Posted

技术标签:

【中文标题】重命名值输出并将值合并到 SQL 中的一列中【英文标题】:Rename value output and combine value in one column in SQL 【发布时间】:2016-12-28 20:06:59 【问题描述】:

我有一张表格,列出了运动员以及他们参加或不参加的运动。我想让结果值在一列中列出。

   SELECT    Ind_First_Name, Ind_Last_Name,
             CASE WHEN Baseball = 'Y' THEN 'Baseball |' ELSE '' END+ ' ' +
             CASE WHEN Football = 'Y' THEN 'Football |' ELSE '' END+ ' ' +
             CASE WHEN Soccer = 'Y' THEN 'Soccer' ELSE '' END

   from      Sports

我希望看到的输出是:(鉴于 Football 有一个“N”) Jane Doe 棒球 |足球

我的输出一直是空白。不确定如何在 Football 值为空白的情况下删除该空间。

【问题讨论】:

如果他们只打棒球会怎样?那你最后会有一个管道,这样可以接受吗? 【参考方案1】:

你可以试试这个吗?

SELECT    Ind_First_Name, Ind_Last_Name,
         CASE WHEN Baseball = 'Y' THEN 'Baseball | ' ELSE '' END +
         CASE WHEN Football = 'Y' THEN 'Football | ' ELSE '' END +
         CASE WHEN Soccer = 'Y' THEN 'Soccer' ELSE '' END

from      Sports

【讨论】:

【参考方案2】:

将空格放在Case Statement内。

更新删除了管道和空格。

SELECT    Ind_First_Name, Ind_Last_Name,
             CASE WHEN Baseball = 'Y' THEN 'Baseball' ELSE '' END  +
             CASE WHEN Football = 'Y' AND Baseball = 'Y' THEN ' | Football' 
                  WHEN Football = 'Y' AND Baseball = 'N' THEN 'Football' ELSE '' END  +
             CASE WHEN Soccer = 'Y' AND (Football = 'Y' OR Baseball = 'Y') THEN ' | Soccer'                             
                  WHEN Soccer = 'Y' AND Baseball = 'N' AND Football = 'N' THEN 'Soccer' ELSE '' END    
   from      Sports

【讨论】:

有缺陷的是,如果他们只打棒球,那最后会有一个吊管。 所以我不确定如何设置它,以便在没有任何内容的情况下不显示管道。当只有 Soccer 为 yes 时,我的输出是: 所以我不确定如何设置它,以便在没有任何内容的情况下不显示管道。当只有足球是“是”时,我的输出是:“足球”与拥有:“足球”相对。输入进行中的空白区域。不确定 iCount= 是否可以工作,也不确定如何对其进行编程。我会继续努力并尝试不同的选择。

以上是关于重命名值输出并将值合并到 SQL 中的一列中的主要内容,如果未能解决你的问题,请参考以下文章

如何在Bash中重命名关联数组?

如何删除一列并创建一个新列而不是在 EF Core 中重命名?

在 Pandas 中重命名“None”值

将数据复制到同一张表和从同一表复制数据,并将复制数据的一列中的值更改为指定值

如何使用 pymongo 在 mongodb 中重命名父字段名称和嵌套字段值?

根据另一列中的元素重命名特定列元素