sql 在一张表中,根据日期转换的星期,把多行excel多列合并成一列行。

安全检查中...
请打开游览器的javascript,然后刷新游览器
浏览器安全检查中… .
还剩 5 秒&sql如何将两个表中主键相同的行的内容合并到一行?
[问题点数:20分,结帖人liztac]
sql如何将两个表中主键相同的行的内容合并到一行?
[问题点数:20分,结帖人liztac]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。Sql Server:多行合并成一行,并做分组统计的两个方法
复制代码 代码如下:--创建 test 表 ,插入数据CREATE TABLE test(code varchar(50), [values] varchar(10),[count] int)INSERT test SELECT '001', 'aa',1UNION ALL SELECT '001', 'bb',2UNION ALL SELECT '002', 'aaa',4UNION ALL SELECT '002', 'bbb',5UNION ALL SELECT '002', 'ccc',3;&--方法一--将多行合并成一行,并做分组统计SELECT code,&&&&&& [values] =&&&&&& stuff(b.[values].value('/R[1]', 'nvarchar(max)'),,,&&&&&&&&&&&& ''),[count]& FROM (SELECT& code,sum([count]) as [count]&&&&&&&&& FROM test&&&&&&&& GROUP BY code) a&CROSS apply (&&&&&&& SELECT [values] =(&&&&&&&&&&& SELECT N',' + [values] FROM test&&&&&&&&&&&&& WHERE code = a.code&&&&&&&&&&&&&&&&&&&&&&&& FOR XML PATH(''), ROOT('R'), TYPE&&&&&&& ))&--方法二---SQL2005中的新解法&& 使用XMLSELECT code, data=STUFF((SELECT ','+[values] FROM test t WHERE code=t1.code FOR XML PATH('')), 1, 1, ''),sum([count]) as [count]FROM test t1GROUP BY code&--查询结果--001&&& aa,bb&&& 3--002&&& aaa,bbb,ccc&&& 12&drop table test
顶一下(0) 踩一下(0)
热门标签:请教高手,如何对sql表中内容 按照日期进行合并,并进行分类统计反应在一张表上_百度知道
请教高手,如何对sql表中内容 按照日期进行合并,并进行分类统计反应在一张表上
168.168:195 2 192.168op_flag user_id user_ip op_time1 2 127:03;其中op_falg表示操作类型:531 2 192:503 2 192.21
10.0:351 2 127,1表示访问 3和5都是下载.1
9.10.0:253 2 192.10.0.21
16.168.0.0.21
9,请问如何写SQL语句.168:453 2 192:325 2 192.1
16:25:55:451 2 127.1
14:393 2 127:28.0.10:user_id user_ip date
访问次数 下载次数 2
9.10.168.168.0:461 2 192:20.21
127:24:535 2 192.10.0.168:03,如何按照相同日期进行合并计数.10:233 2 127:37.0:451 2 192,应得到统计表如下.0.1
14:32.10:39.10.0.0.1
11.168:22.21
9:19请教SQL高手.21
9:31:585 2 127:55.21
16:24.10,并进行分类统计反应在一张表上.0.21
面这个就是希望执行后得到的效果,不过把访问次数和下载次数放在同一张表里不知道怎么实现;分别是可以实现的,望指点~ 日期转换到不成问题,刚才有高手指点了,这个可以实现,可以用convert函数在分组查询
提问者采纳
elect user_id,convert(varchar(10),op_time,convert(varchar(10),op_time,120) as date,user_ip,sum(case op_flag when 1 then 1 else 0 end) as 访问次数,sum(case op_flag when 3 then 1 when 5 then 1 else 0 end) as 下载次数 from 表名group by user_id,user_ip
提问者评价
非常,感谢,虽然有点小错误,但还是最终解决了,谢谢指点~~~
其他类似问题
为您推荐:
其他4条回答
elect user_id,sum(case when op_falg=3 or op_falg=5 then 1 end) as 下载次数from tbgroup by user_id,convert(varchar(10),21)as [date],getdate(),getdate(),sum(case when op_falg=1 then 1 end) as 访问次数, user_ip, user_ip,convert(varchar(10)
select s.user_id,s.user_ip,s.op_date,sum(s.fw) as 访问次数,sum(s.xz) as 下载次数 from
(select user_id,user_ip,convert(varchar,op_time,10) as op_date,fw=
case op_flag
when 1 then 1
case op_flag
when 3 then 1
when 5 then 1
end from [表名]) as s group by s.user_id,s.user_ip,s.op_date如上,日期格式修改convert函数参数改成自己想要的格式。
貌似不行。我道行浅,也说说我的看法。其他高手请赐教。首先,因为你的表是op_flag, user_id ,user_ip, op_time其中时间是日期加时间
11:55:35,应给不可以弄成日期形式其次就是你的 op_flag了。
select user_id,user_ip,date,count(*) from XXX(tablename)group by user_id,user_ip,date
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 sql 将一行转换成一列 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信