表结构:
日期 用户ID 数量
2006.9.20 8 20
2006.9.1 10 20
2006.9.18 1 20
2006.9.1 5 20
2006.9.13 1 20
2006.9.14 3 20
2006.9.14 2 20
2006.9.20 7 20
2006.9.10 6 20
2006.9.20 1 20
统计结果为(按月按计,如统计9月数据)
日期 用户ID1, 用户ID2, 用户ID3....
1号 数据汇总 数据汇总 数据汇总
2号 数据汇总 数据汇总 数据汇总
3号 数据汇总 数据汇总 数据汇总
4号 数据汇总 数据汇总 数据汇总
5号 数据汇总 数据汇总 数据汇总
6号 数据汇总 数据汇总 数据汇总
7号 数据汇总 数据汇总 数据汇总
8号 数据汇总 数据汇总 数据汇总
9号 数据汇总 数据汇总 数据汇总........
日期 用户ID 数量
2006.9.20 8 20
2006.9.1 10 20
2006.9.18 1 20
2006.9.1 5 20
2006.9.13 1 20
2006.9.14 3 20
2006.9.14 2 20
2006.9.20 7 20
2006.9.10 6 20
2006.9.20 1 20
统计结果为(按月按计,如统计9月数据)
日期 用户ID1, 用户ID2, 用户ID3....
1号 数据汇总 数据汇总 数据汇总
2号 数据汇总 数据汇总 数据汇总
3号 数据汇总 数据汇总 数据汇总
4号 数据汇总 数据汇总 数据汇总
5号 数据汇总 数据汇总 数据汇总
6号 数据汇总 数据汇总 数据汇总
7号 数据汇总 数据汇总 数据汇总
8号 数据汇总 数据汇总 数据汇总
9号 数据汇总 数据汇总 数据汇总........
解决方案 »
- 如何即时更新sql2008中 计算列的结果到dbgrid中?
- SQL语句,大虾们分析一下
- 如果一个sql语句同时更新多条数据,那么此时Inserted表有几条记录呢?
- 这样的查询怎么写?
- 将 varchar 转换为数据类型 numeric 时出现算术溢出错误。
- SQLserver里面的DATETIME类型搞得我晕头转向的 !!!!!!!!!!
- 如何解决安时间累计的问题!!!
- 大数据量多条件情况下怎么提高数据查询效率?
- 如何把一条sql语句作为字符串存入数据库啊啊?
- vb+sql7.0 做进销存的一个问题
- 一台机器突然所有用 ado 连接数据库的软件都连不上了.提示"未指定错误",用odbc连接的程序却可以连上.
- 如何修改主键,急?
set @sql=''select @sql=@sql+',[用户ID'+rtrim(用户ID)+']=sum(case 用户ID when '+rtrim(用户ID)+' then 数量 else 0 end)' from 表 group by 用户ID order by 用户IDset @sql='select detepart(dd,日期)'+@sql+' from 表 group by detepart(dd,日期) order by detepart(dd,日期)'exec(@sql)
'detepart' 不是可以识别的 函数名。
declare @sql varchar(8000)
set @sql=''select @sql=@sql+',[用户ID'+rtrim(用户ID)+']=sum(case 用户ID when '+rtrim(用户ID)+' then 数量 else 0 end)' from 表 group by 用户ID order by 用户IDset @sql='select datepart(dd,日期)'+@sql+' from 表 group by detepart(dd,日期) order by datepart(dd,日期)'exec(@sql)
insert into test select '2006.9.20','8' ,20
insert into test select '2006.9.1' ,'10',20
insert into test select '2006.9.18','1' ,20
insert into test select '2006.9.1' ,'5' ,20
insert into test select '2006.9.13','1' ,20
insert into test select '2006.9.14','3' ,20
insert into test select '2006.9.14','2' ,20
insert into test select '2006.9.20','7' ,20
insert into test select '2006.9.10','6' ,20
insert into test select '2006.9.20','1' ,20
godeclare @sql varchar(8000)
set @sql=''
select @sql=@sql+',[用户ID'+rtrim(用户ID)+']=sum(case 用户ID when '+rtrim(用户ID)+' then 数量 else 0 end)' from test group by 用户ID order by 用户ID
set @sql='select datepart(dd,日期) as 日期' +@sql+' from test group by datepart(dd,日期) order by datepart(dd,日期)'exec(@sql)drop table test
go
日期 用户ID1 用户ID10 用户ID2 用户ID3 用户ID5 用户ID6 用户ID7 用户ID8
1 0 20 0 0 20 0 0 0
10 0 0 0 0 0 20 0 0
13 20 0 0 0 0 0 0 0
14 0 0 20 20 0 0 0 0
18 20 0 0 0 0 0 0 0
20 20 0 0 0 0 0 20 20
set @sql=''select @sql=@sql+',[用户ID'+rtrim(用户ID)+']=sum(case 用户ID when '+rtrim(用户ID)+' then 数量 else 0 end)' from 表 group by 用户ID order by 用户IDset @sql='select detepart(dd,日期)'+@sql+' from 表 group by detepart(dd,日期) order by detepart(dd,日期)'exec(@sql)统计条件放什么地方
string sql="select @sql=@sql+',[用户ID'+rtrim(用户ID)+']=sum(case 用户ID when '+rtrim(用户ID)+' then 数量 else 0 end)' from 表 group by 用户ID order by 用户ID"sql='select detepart(dd,日期)'+sql+' from 表 group by detepart(dd,日期) order by detepart(dd,日期)'";这样好像不行
[用户id1]=sum(case 用户id when 1 then 数量 else 0 end )
[用户id2]=.............
from test
group by convert(varchar(8),日期,112) 用静态
或生成视图