请教 这是什么错误

csu2008 2008-06-29 01:17:34

declare @minDate datetime
declare @sql varchar(8000)

SELECT @minDate=min([DATETIME])
FROM #T
SET @sql='select ORDER_NO,ITEM_NO'

while @minDate<=getdate()
begin
select @sql=@sql+',sum(case when convert(varchar(10),[DATETIME],120)='''
+convert(varchar(10),@minDate,120)+''' then QTY else 0 end) ['
+ltrim(month(@minDate))+N'月'+ltrim(day(@minDate))+N'日'+']'
set @minDate=dateadd(day,1,@minDate)
end

exec (@sql+' from #T group by ORDER_NO,ITEM_NO')

Server: Msg 156, Level 15, State 1, Line 1
关键字 'from' 附近有语法错误。
...全文
54 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hery2002 2008-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangCK 的回复:]
马甲真多..
[/Quote]
M1CR0S0FT 2008-06-29
  • 打赏
  • 举报
回复
楼主,大家都在帮忙了,但很基础的东西,你也需要有啊,另外你也需要仔细点啊。
csu2008 2008-06-29
  • 打赏
  • 举报
回复
知道我的问题

但我解决不了
别人也帮不了我

谢谢
csu2008 2008-06-29
  • 打赏
  • 举报
回复
把PAET_NO 改成 ITEM_NO
怎么就出错

求大师帮忙啊
liangCK 2008-06-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 csu2008 的回复:]
表 有这几个字段
ORDER_NO ITEM_NO QTY DATETIME


怎么用你提供的方法就报错了
[/Quote]
你自己的问题.
csu2008 2008-06-29
  • 打赏
  • 举报
回复
表 有这几个字段
ORDER_NO ITEM_NO QTY DATETIME


怎么用你提供的方法就报错了
liangCK 2008-06-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 csu2008 的回复:]
楼主 大师
帮帮忙啊

换个表 ,改个字段就报错
[/Quote]

连换个表..换个字段都不会..晕
liangCK 2008-06-29
  • 打赏
  • 举报
回复
--> 测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (ORDER_NO varchar(6),PAET_NO varchar(7),QTY int,[DATETIME] datetime)
insert into #T
select 'A80301','33A-001',10,'2008-06-21' union all
select 'A80301','33A-001',20,'2008-06-22' union all
select 'A80301','33A-002',5,'2008-06-22' union all
select 'A80302','33A-001',30,'2008-06-23'

declare @minDate datetime
declare @sql varchar(8000)

select @minDate=min([DateTime]) from #T
set @sql='select ORDER_NO,PAET_NO'

while @minDate<=getdate()
begin
select @sql=@sql+',sum(case when convert(varchar(10),[DATETIME],120)='''
+convert(varchar(10),@minDate,120)+''' then QTY else 0 end) ['
+ltrim(month(@minDate))+'月'+ltrim(day(@minDate))+'日'+']'
set @minDate=dateadd(day,1,@minDate)
end

exec (@sql+' from #T group by ORDER_NO,PAET_NO')

/*
ORDER_NO PAET_NO 6月21日 6月22日 6月23日 6月24日 6月25日 6月26日 6月27日 6月28日
-------- ------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
A80301 33A-001 10 20 0 0 0 0 0 0
A80302 33A-001 0 0 30 0 0 0 0 0
A80301 33A-002 0 5 0 0 0 0 0 0

(3 行受影响)
*/
liangCK 2008-06-29
  • 打赏
  • 举报
回复
--原帖.这个代码是我写的.没错.
http://topic.csdn.net/u/20080628/09/be3183ea-a277-4cb8-a7a6-4cfb16641f43.html

--> 测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (ORDER_NO varchar(6),PAET_NO varchar(7),QTY int,[DATETIME] datetime)
insert into #T
select 'A80301','33A-001',10,'2008-06-21' union all
select 'A80301','33A-001',20,'2008-06-22' union all
select 'A80301','33A-002',5,'2008-06-22' union all
select 'A80302','33A-001',30,'2008-06-23'

declare @minDate datetime
declare @sql varchar(8000)

select @minDate=min([DateTime]) from #T
set @sql='select ORDER_NO,PAET_NO'

while @minDate<=getdate()
begin
select @sql=@sql+',sum(case when convert(varchar(10),[DATETIME],120)='''+convert(varchar(10),@minDate,120)+''' then QTY else 0 end) ['+convert(varchar(10),@minDate,111)+']'
set @minDate=dateadd(day,1,@minDate)
end

exec (@sql+' from #T group by ORDER_NO,PAET_NO')

/*
ORDER_NO PAET_NO 2008/06/21 2008/06/22 2008/06/23 2008/06/24 2008/06/25 2008/06/26 2008/06/27 2008/06/28
-------- ------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
A80301 33A-001 10 20 0 0 0 0 0 0
A80302 33A-001 0 0 30 0 0 0 0 0
A80301 33A-002 0 5 0 0 0 0 0 0

(3 行受影响)
*/
csu2008 2008-06-29
  • 打赏
  • 举报
回复
楼主 大师
帮帮忙啊

换个表 ,改个字段就报错
liangCK 2008-06-29
  • 打赏
  • 举报
回复
马甲真多..

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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