SQL如何将一列的数据进行拆分,并分为多行显示

向阳的花儿 2018-04-19 04:03:46
各位大神,求教:


转化后的数据:

其中红色标出的是之前的Result拆分后的值,Result一列为@隔开的数据,最多5个数据,个数不定


将数据转化之后,再按照时间排序,取从开始时间的125行数据和结束时间之前的125条数据
...全文
9999 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41161419 2019-09-09
  • 打赏
  • 举报
回复
比如 一个表中有
编号 名称 数量
001 123 3
002 1245 1
在存储过程中进行查询,然后在C#中将数据赋值给datagridview ,
结果是
123 1
123 1
123 1
1245 1
这个样子咋办啊?
向阳的花儿 2018-04-19
  • 打赏
  • 举报
回复
跟你转发的这个不一样那,
吉普赛的歌 2018-04-19
  • 打赏
  • 举报
回复
USE tempdb
GO
--1. 要增加一个分割表值函数
IF OBJECT_ID('[dbo].[Fun_String2ToStringArray]') IS NOT NULL 
    DROP FUNCTION [dbo].[Fun_String2ToStringArray]
GO
CREATE FUNCTION [dbo].[Fun_String2ToStringArray](@str NVARCHAR(MAX), @split NVARCHAR(10))
RETURNS @table TABLE ([item] NVARCHAR(max))
AS
BEGIN
    IF LEN(@split) = 0
      BEGIN
        SET @split = N','
      END
 
    DECLARE @xml XML;
    SET @xml = CONVERT(XML, '<x><![CDATA[' + replace(CONVERT(VARCHAR(MAX), @str), @split, ']]></x><x><![CDATA[') + ']]></x>')
 
    INSERT INTO @table
      SELECT item
      FROM   (SELECT c.value('text()[1]', 'nvarchar(4000)') [item]
              FROM   @xml.nodes('/x') t(c)) t
      WHERE  item IS NOT NULL
 
    RETURN
END
GO
--测试表及测试数据
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(
	result VARCHAR(20),
	d DATETIME	
)
GO
INSERT INTO t VALUES('23@34','2018-04-01 08:00')
INSERT INTO t VALUES('3','2018-04-01 09:00')
INSERT INTO t VALUES('3','2018-04-02 09:00')
INSERT INTO t VALUES('3@4.6@5.7@3.2@4','2018-04-03 08:00')
INSERT INTO t VALUES('30','2018-04-04 09:00')
INSERT INTO t VALUES('34','2018-04-05 09:00')
INSERT INTO t VALUES('6@4.6@4.7@3.2@3','2018-04-06 09:00')
INSERT INTO t VALUES('8','2018-04-07 09:00')
INSERT INTO t VALUES('8','2018-04-08 09:00')

--实际的查询语句
;WITH cte AS (
	SELECT f.item AS result,t.d FROM t 
		CROSS APPLY dbo.[Fun_String2ToStringArray](t.result,'@') AS f
)
,cte2 AS(
	SELECT TOP 125 * FROM cte ORDER BY d
),cte3 AS(
	SELECT TOP 125 * FROM cte ORDER BY d DESC
)
SELECT * FROM cte2
UNION
SELECT * FROM cte3
向阳的花儿 2018-04-19
  • 打赏
  • 举报
回复
大神们那 感谢感谢
LittleMan_LC 2018-04-19
  • 打赏
  • 举报
回复
/* 有表tb, 如下: id value ----------- ----------- 1 aa,bb 2 aaa,bbb,ccc 欲按id,分拆value列, 分拆后结果如下: id value ----------- -------- 1 aa 1 bb 2 aaa 2 bbb 2 ccc */ create table tb(id int,value varchar(30)) insert into tb values(1,'aa,bb') insert into tb values(2,'aaa,bbb,ccc') go SELECT *FROM tb SELECT A.id, B.value FROM( SELECT id, [value] = CONVERT(xml,'<root><v>' + REPLACE([value], ',', '</v><v>') + '</v></root>') FROM tb )A OUTER APPLY( SELECT value = N.v.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(v) )B DROP TABLE tb
SQL SERVER 根据关键字符,将一列分成多行
可根据关键字符将一列分成多行显示,例如 A B 1 1.1.2 拆分成 1 1 1 1 1 2 进行相关的显示
SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据.docx
找了网上很多资料,都没有详细的做法有的还很复杂,自己写了个分割函数,通过直接查询就能分割多行,很方便。
程序员老关带您学SQL第1篇:SQL基础【为程序员和数据分析员准备】
本课程是SQL系列课程第一篇:SQL知识基础。本篇包括9章内容,介绍开篇综述语言的一些基础知识。内容包括管理表,管理视图,修改数据,查询数据,聚集查询结果,子查询和表连接。通过本篇的学习,读者可以全面了解标准SQL。 第1章 开篇综述第2章 学习环境搭建第3章 管理表第4章 管理视图第5章 修改数据第6章 查询数据第7章 聚集查询结果第8章 子查询第9章 表连接 
一列分割成多列,多行合并为一行
SQL语句用with将列分割成多列存为临时表,再将多行某个字段拼接合并为一行
oracle sql 某列的值按照逗号分割显示多行.sql
oracle 某列存儲的值是有逗號的字符串,希望通過逗號分隔開來顯示多行sql,有預期結果,有項目實戰。
疑难问题

22,210

社区成员

121,722

社区内容

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今

加载中

查看更多榜单
社区公告
暂无公告

试试用AI创作助手写篇文章吧

+ 用AI写文章

PHP网站源码双龙网站优化惠州关键词按天计费木棉湾外贸网站建设横岗网站优化按天计费南澳百度seo木棉湾百度竞价松岗企业网站建设丹竹头企业网站改版大芬网站定制西乡网站排名优化盐田网站优化按天计费福永网站改版双龙如何制作网站南山建网站平湖网站制作横岗模板网站建设龙华推广网站惠州关键词排名丹竹头SEO按天收费观澜百姓网标王推广木棉湾网络广告推广永湖关键词排名福永SEO按天扣费坪地高端网站设计大浪百搜词包龙岗外贸网站制作西乡阿里店铺运营坪山百姓网标王南联SEO按天收费福田百度网站优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化