SQL存储过程获取所有以前年份记录的串联字符串

基绍

我有一个带有时间列的表。我正在尝试创建一个存储过程(SQL Server 2008),以便为每行包含前几年所有的上一个值和当前行的值获取一个字符串。例如,如果我有下表。

_________________
   时间值
_________________ 
MAR-2009 1 
_________________ 
MAY-2009 2 
_________________
一月-2010 3 
_________________ 
APR-2011 4 
_________________ 
FEB-2011 5 
_________________
扬2012 6 
_________________

我正在尝试获得以下结果

____________________________________________________
   时间值结果
____________________________________________________ 
MAR-2009 1 “2009,1” 
____________________________________________________ 
MAY-2009 2 “2009,2” 
____________________________________________________
扬-2010 3 “2009,2,2010,3” 
____________________________________________________ 
APR-2011 4“2009,2,2010, 3,2011,4“ 
____________________________________________________ 
2011年2月5” 2009,2,2010,3,2011,5“ 
____________________________________________________ 
jan-2012 6” 2009,2,2010,3,2011,5,2012,6“
____________________________________________________

斯坦

下面是示例,但出于性能目的,最好对原始表进行一些更改。

-- first we need to extract months/years to get comparable and sortable values
-- otherwise we can't select "all previous years" and "last value".
;with converted as (
    select
        time,
        right(time, 4) as year,
        datepart(m, '2000-' + left(time, 3) + '-01') as month,
        right(time, 4) + ',' + convert(varchar(16), value) as concatenated,
        value
    from
        YourTableName --TODO: Replace this with your table name
)
select
    time,
    value,
    -- using xml for string concatenation
    isnull((
        select
            prev.concatenated + ',' as 'text()'
        from
            converted as prev
        where
            prev.year < main.year
            and prev.month = (select max(month) from converted lookup where lookup.year = prev.year)
        for
            xml path('')
    ),'')
    + main.concatenated
from
    converted as main

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过SQL Powershell在所有存储过程中搜索字符串?

来自分类Dev

我的 Sql 查询从选定的月份和年份中获取所有以前的记录

来自分类Dev

添加列表和字符串并导入当前年份

来自分类Dev

sql搜索字符串并获取所有行内容

来自分类Dev

获取存储过程中的exec字符串

来自分类Dev

如何将带有 DatetIme.Today() 的字符串传递给 sql 存储过程

来自分类Dev

打印多个字符串与串联并同时打印所有字符串

来自分类Dev

如果字符串为空,则存储过程PL SQL

来自分类Dev

SQL存储过程未返回字符串值

来自分类Dev

如何在集合中获取所有文档的ID并存储在字符串数组中?

来自分类Dev

如何获取段落并将所有句子存储在字符串数组中

来自分类Dev

MySQL - 获取存储在字段中的所有字符串大小

来自分类Dev

获取字符串的当前年值

来自分类Dev

如何从字符串中获取年份?

来自分类Dev

从日期字符串中获取年份

来自分类Dev

将定界字符串传递给存储过程以删除选定的productID,但删除表中的所有数据

来自分类Dev

如何在不使用存储过程的情况下在所有表中查找字符串

来自分类Dev

在字符串中使用当前年份到日期函数

来自分类Dev

如何选择以某些字符串开头的所有记录?

来自分类Dev

如何遍历单个记录中的所有字符串

来自分类Dev

带字符串的存储过程

来自分类Dev

获取字符串中所有字符的数值

来自分类Dev

获取所有不在字符串python中的字符

来自分类Dev

如何在更改列字符串之前从SQL表获取所有行?

来自分类Dev

当列名存储为串联字符串时选择值

来自分类Dev

字符串文字之后,所有+都将被视为字符串串联运算符,为什么?

来自分类Dev

获取用特定字符串删除的所有行

来自分类Dev

获取Robolectric中所有语言的字符串

来自分类Dev

从字符串数组获取所有可能的名称组合?

Related 相关文章

  1. 1

    如何通过SQL Powershell在所有存储过程中搜索字符串?

  2. 2

    我的 Sql 查询从选定的月份和年份中获取所有以前的记录

  3. 3

    添加列表和字符串并导入当前年份

  4. 4

    sql搜索字符串并获取所有行内容

  5. 5

    获取存储过程中的exec字符串

  6. 6

    如何将带有 DatetIme.Today() 的字符串传递给 sql 存储过程

  7. 7

    打印多个字符串与串联并同时打印所有字符串

  8. 8

    如果字符串为空,则存储过程PL SQL

  9. 9

    SQL存储过程未返回字符串值

  10. 10

    如何在集合中获取所有文档的ID并存储在字符串数组中?

  11. 11

    如何获取段落并将所有句子存储在字符串数组中

  12. 12

    MySQL - 获取存储在字段中的所有字符串大小

  13. 13

    获取字符串的当前年值

  14. 14

    如何从字符串中获取年份?

  15. 15

    从日期字符串中获取年份

  16. 16

    将定界字符串传递给存储过程以删除选定的productID,但删除表中的所有数据

  17. 17

    如何在不使用存储过程的情况下在所有表中查找字符串

  18. 18

    在字符串中使用当前年份到日期函数

  19. 19

    如何选择以某些字符串开头的所有记录?

  20. 20

    如何遍历单个记录中的所有字符串

  21. 21

    带字符串的存储过程

  22. 22

    获取字符串中所有字符的数值

  23. 23

    获取所有不在字符串python中的字符

  24. 24

    如何在更改列字符串之前从SQL表获取所有行?

  25. 25

    当列名存储为串联字符串时选择值

  26. 26

    字符串文字之后,所有+都将被视为字符串串联运算符,为什么?

  27. 27

    获取用特定字符串删除的所有行

  28. 28

    获取Robolectric中所有语言的字符串

  29. 29

    从字符串数组获取所有可能的名称组合?

热门标签

归档