• SQL分割查询结果


    今儿同学问了我一需求,如下图:

    原本表结构:

    要得到的结果:

    我的SQL语句:

    SELECT DISTINCT Name,code,p.Date
    FROM Person
    OUTER APPLY(
    SELECT
    JDate
    = STUFF(REPLACE(REPLACE(
    (
    SELECT DISTINCT SUBSTRING(CONVERT(VARCHAR(10),Date,111),9, 2) AS date1
    FROM Person
    WHERE code='021'
    FOR XML AUTO
    ),
    '<Person date1="', '|'), '"/>', ''), 1, 1, '')
    )p
    WHERE code='021'
    注:
      STUFF
      删除指定长度的字符,并在指定的起点处插入另一组字符。

        语法:STUFF ( character_expression , start , length ,character_expression )

     FOR XML AUTO

      FOR XML子句的AUTO模式:返回数据表为起表名的元素,每一列的值返回为属性;

    OUTER APPLY
     CROSS APPLY 仅返回外部表中通过表值函数生成结果集的行。
     OUTER APPLY 既返回生成结果集的行,也返回不生成结果集的行,其中表值函数生成的列中的值为 NULL。


    我这种写法好像复杂了点,你可以先写个函数,有更优的解决方案欢迎指点,谢谢!
  • 相关阅读:
    终于清楚了!!!【使用jenkins发布应用到tomcat详细过程】
    RocketMQ相关问题
    关于idea修改当前使用的git账户的问题
    Elasticsearchan安装初尝01-问题记录
    Redis学习日记-03
    Git初探笔记02
    Git初探笔记01
    Redis学习日记-02
    HDU 1017
    HDU 1013
  • 原文地址:https://www.cnblogs.com/pfs1314/p/1983939.html
Copyright © 2020-2023  润新知