declare @s varchar(8000)
--纵向查询
select top 30 [date]
,[count]=count(*)
into #t
from table1 where [date]<getdate() order by [date] desc
group by [date])
--行列转换
select @s=''+[date]+'=max(case [date] when '''+[date]+''' then [count] end),'
from #t
set @s=left(@s,len(@s)-1)+' from #t group by [date]'
exec(@s)
解决方案 »
- 一个基础但很有用的SQL问题
- 如何把sql2005express升级到sql2005企业版
- 关于方差的一个算法 请高手指点
- 用insert into table union all select 插入的记录数达到1724时,SQL出现错误!
- 请教,在数据库中如何比较两个字段含有相同的字符串?
- !!DTS导数包在企业管理器里执行没问题,定成任务执行就报错!大家帮帮忙!
- 现在怎么学??
- XP 连接SQLServer2000
- OracleOraHome81ManagementServer在win2000 server下无法启动
- 如何使用sql语句或者命令行导入数据?
- WIN2000 事务日志中说SQL SERVER日志已满,请教2个问题,急!!!!!
- 关于跨服务器搜索,大家有没有比较好的思路,谢谢!
select T.* into #t from (select 日期= substring(convert(varchar(10),[date],120),9,10),訪問次數=count(*) from table1 group by 日期)T
select * from #t
--然後對#t進行行列轉換
declare @s varchar(8000)
--纵向查询
select top 30 [date]
,[count]=count(*)
into #t
from table1 where [date]<getdate() order by [date] desc
group by [date]) <------这里
--行列转换
select @s=''+[date]+'=max(case [date] when '''+[date]+''' then [count] end),'
from #t
set @s=left(@s,len(@s)-1)+' from #t group by [date]'
exec(@s)
说有语法错误
#t 是什么意思
select 日期=substring(N.日期,9,10),N.訪問次數 into #t from
( select top 30 T.* from
(select 日期=convert(varchar(10),[date],120),訪問次數=count(*) from table1 group by 日期)T order by T.日記 desc)N --查看
select * from #t
--然後對#t進行行列轉換
去掉后面的 )即:
declare @s varchar(8000)
--纵向查询
select top 30 [date]
,[count]=count(*)
into #t
from table1 where [date]<getdate() order by [date] desc
group by [date]
--行列转换
select @s=''+[date]+'=max(case [date] when '''+[date]+''' then [count] end),'
from #t
set @s=left(@s,len(@s)-1)+' from #t group by [date]'
exec(@s)
服务器: 消息 156,级别 15,状态 1,行 7
在关键字 'group' 附近有语法错误。
谢谢你的帮忙,已经生成的新表,可是记录是纵向的,希望生成横向的,新表里只有一条记录有31个字段,新表可以先创建(如果查询设计很麻烦的话)
declare @s varchar(8000)select top 30
[date],
[count]=count(*)
into #t
from table1
where [date]<getdate()
group by [date]
order by [date] descselect @s=''+[date]+'=max(case [date] when '''+[date]+''' then [count] end),'
from #t
set @s=left(@s,len(@s)-1)+' from #t group by [date]'
exec(@s)还是报错:(所影响的行数为 8 行)服务器: 消息 241,级别 16,状态 1,行 12
从字符串转换为 datetime 时发生语法错误。