加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL中需要不寻常的输出格式

发布时间:2020-12-12 06:25:28 所属栏目:MsSql教程 来源:网络整理
导读:我有一个格式的SQL表; Name Date ValueABC 1/21/2015 52ABC 1/22/2015 12ABC 1/23/2015 32DEF 1/21/2015 78DEF 1/22/2015 53etc... 为了与遗留程序兼容,我需要格式化文本文件,如下所示: ABC1/21/2015,521/22/2015,121/23/2015,32DEF1/21/2015,781/22/2015,53
我有一个格式的SQL表;
Name   Date         Value
ABC    1/21/2015    52
ABC    1/22/2015    12
ABC    1/23/2015    32
DEF    1/21/2015    78
DEF    1/22/2015    53
etc...

为了与遗留程序兼容,我需要格式化文本文件,如下所示:

ABC
1/21/2015,52
1/22/2015,12
1/23/2015,32
DEF
1/21/2015,78
1/22/2015,53

任何的意见都将会有帮助.

解决方法

一种选择是使用UNION为结果集创建标题行,然后进行排序,使它们出现在每个Name组的顶部.您可以使用计算列来执行此操作,该列将这些生成的行标识为标题.
SELECT CASE WHEN t.Header = 1
       THEN t.Name
       ELSE CONCAT(t.Date,',t.Value)
       END
FROM
(
    SELECT DISTINCT Name,NULL AS Date,NULL AS Value,1 AS Header
    FROM yourTable
    UNION ALL
    SELECT Name,Date,Value,0 AS Header
    FROM yourTable
) t
ORDER BY t.Name,t.Header DESC,t.Date

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读