当前位置: 代码迷 >> Sql Server >> 老革命碰到新有关问题,行列转换,求指点
  详细解决方案

老革命碰到新有关问题,行列转换,求指点

热度:35   发布时间:2016-04-24 19:14:39.0
老革命碰到新问题,行列转换,求指点。
之前有个朋友发贴,要求按照自定义的字符,将字符串分割后,存入不同的列。
这个做法有很多种,这里就不一一列举了。
我自己写了个SQL语句,可以不借助函数,临时表等,直接分割字符串。
源数据:
ID          date                    data                        
----------- ----------------------- ----------------------------
1           2014-01-20 11:36:08.943 1asd 2assd 3asd 4das 5gfsd  
2           2014-01-20 11:36:08.943 6asd 7assd 8asd 9das 10agfsd

分割后:
ID  date                    data   
--- ----------------------- -------
1   2014-01-20 11:36:44.993 1asd   
1   2014-01-20 11:36:44.993 2assd  
1   2014-01-20 11:36:44.993 3asd   
1   2014-01-20 11:36:44.993 4das   
1   2014-01-20 11:36:44.993 5gfs   
2   2014-01-20 11:36:44.993 6asd   
2   2014-01-20 11:36:44.993 7assd  
2   2014-01-20 11:36:44.993 8asd   
2   2014-01-20 11:36:44.993 9das   
2   2014-01-20 11:36:44.993 10agfs 

如何使用SQL语句直接得出如下结果:
ID  date                    data1   data2   data3   data4   data5   
--- ----------------------- ------- ------- ------- ------- -------
1   2014-01-20 11:36:44.993 1asd    2assd   3asd    4das    5gfs
2   2014-01-20 11:36:44.993 6asd    7assd   8asd    9das    10agfs

要求不借助函数,临时表任何其他手段,可以动态显示(列数不确定)。
我看了很多资料,也没能像出来怎么写,这里大拿多,所以来问问。
pivot是不能用了,因为列中没有相同值可以分组。

------解决方案--------------------
动态行专列应该可以吧,你有什么难言之隐?
------解决方案--------------------
直接从分割后得到数据还是要从元数据开始?我在年会,不然帮你写一下
------解决方案--------------------
引用:
Quote: 引用:

动态行专列应该可以吧,你有什么难言之隐?

没啥难言之隐。
其实我个人还是反对在数据库进行汉列转换的。只是正好做到这里,本来觉得应该不难,但是搞了一下以后还是不知道怎么弄。所以上来问问。

如贴中所说:不借助函数,临时表任何其他手段,可以动态显示(列数不确定)。
兄弟如果知道,请明示。


你的意思是,先进行分割,然后再动态行传列?
------解决方案--------------------
引用:
直接从分割后得到数据还是要从元数据开始?我在年会,不然帮你写一下


开年会,呵呵,希望版主能摸到大奖
------解决方案--------------------
直接一次性做完会很多代码哦
------解决方案--------------------
听说大奖是iphone5,不过估计没份了……只有500元的自助餐……
  相关解决方案