一个小问题,请求各位大哥帮忙?

daqi2010 2009-10-25 10:14:25
declare @sql varchar(8000)
declare @sql2 varchar(8000)
declare @year int
set @sql=2009
set @sql2=''
set @sql='
select a.chitty_name as ''name'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) = @year and datepart(month,a.chitty_addtime) = 1 then b.pro_price else 0 end) as money),0)as ''m1'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) = @year and datepart(month,a.chitty_addtime) = 2 then b.pro_price else 0 end) as money),0)as ''m2''
from chitty a left join proitem b on a.chitty_id=b.chitty_id where 1=1 ' +@sql2+ 'group by a.chitty_name'
PRINT( @Sql)
EXECUTE (@SQL)
GO
-----执行提示--------
必须声明变量 '@year'。
请问应该如何写,谢谢大家
...全文
75 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SQL77 2009-10-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 daqi2010 的回复:]
谢谢大家,按照大家的方法,没有数据显示。一片空白
[/Quote]
你的@YEAR没赋值,弄错了,我们改了
daqi2010 2009-10-25
  • 打赏
  • 举报
回复
谢谢大家,按照大家的方法,没有数据显示。一片空白
云中客 2009-10-25
  • 打赏
  • 举报
回复
变量 '@year' 没有赋值,不能使用
Flyingdragon168 2009-10-25
  • 打赏
  • 举报
回复
楼主的SQL语句有问题。
就是这句了。
set @sql='
select a.chitty_name as ''name'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) ='+LTRIM(@year)+' and datepart(month,a.chitty_addtime) = 1 then b.pro_price else 0 end) as money),0)as ''m1'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) = '+LTRIM(@year)+' and datepart(month,a.chitty_addtime) = 2 then b.pro_price else 0 end) as money),0)as ''m2''
from chitty a left join proitem b on a.chitty_id=b.chitty_id where 1=1 ' +@sql2+ 'group by a.chitty_name'
--小F-- 2009-10-25
  • 打赏
  • 举报
回复
declare @sql varchar(8000) 
declare @sql2 varchar(8000)

declare @year int
set @year=2009
set @sql2=''
set @sql='
select
a.chitty_name as ''name'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) =
'+LTRIM(@year)+' and datepart(month,a.chitty_addtime) = 1
then
b.pro_price else 0 end) as money),0)as ''m1'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) =
'+LTRIM(@year)+' and datepart(month,a.chitty_addtime) = 2
then
b.pro_price else 0 end) as money),0)as ''m2''
from
chitty a
left join proitem b on
a.chitty_id=b.chitty_id
where
1=1 ' +@sql2+ '
group by
a.chitty_name'
EXECUTE (@Sql)
go
bancxc 2009-10-25
  • 打赏
  • 举报
回复
declare @sql varchar(8000) 
declare @sql2 varchar(8000)
declare @year int
set @year=2009 -----------
set @sql2=''
set @sql='
select a.chitty_name as ''name'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) =' +rtrim(@year)+ 'and datepart(month,a.chitty_addtime) = 1 then b.pro_price else 0 end) as money),0)as ''m1'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) =' +rtrim(@year)+ 'and datepart(month,a.chitty_addtime) = 2 then b.pro_price else 0 end) as money),0)as ''m2''
from chitty a left join proitem b on a.chitty_id=b.chitty_id where 1=1 ' +@sql2+ 'group by a.chitty_name'
PRINT( @Sql)
EXECUTE (@SQL)
GO
SQL77 2009-10-25
  • 打赏
  • 举报
回复
declare @sql varchar(8000) 
declare @sql2 varchar(8000)

declare @year int
set @year=2009
set @sql2=''
set @sql='
select a.chitty_name as ''name'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) ='+LTRIM(@year)+' and datepart(month,a.chitty_addtime) = 1 then b.pro_price else 0 end) as money),0)as ''m1'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) = '+LTRIM(@year)+' and datepart(month,a.chitty_addtime) = 2 then b.pro_price else 0 end) as money),0)as ''m2''
from chitty a left join proitem b on a.chitty_id=b.chitty_id where 1=1 ' +@sql2+ 'group by a.chitty_name'
PRINT @Sql


select a.chitty_name as 'name',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) =2009 and datepart(month,a.chitty_addtime) = 1 then b.pro_price else 0 end) as money),0)as 'm1',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) = 2009 and datepart(month,a.chitty_addtime) = 2 then b.pro_price else 0 end) as money),0)as 'm2'
from chitty a left join proitem b on a.chitty_id=b.chitty_id where 1=1 group by a.chitty_name
SQL77 2009-10-25
  • 打赏
  • 举报
回复
declare @sql varchar(8000) 
declare @sql2 varchar(8000)
declare @year int
set @sql=2009
set @sql2=''
set @sql='
select a.chitty_name as ''name'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) ='+LTRIM(@year)+' and datepart(month,a.chitty_addtime) = 1 then b.pro_price else 0 end) as money),0)as ''m1'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) = '+LTRIM(@year)+' and datepart(month,a.chitty_addtime) = 2 then b.pro_price else 0 end) as money),0)as ''m2''
from chitty a left join proitem b on a.chitty_id=b.chitty_id where 1=1 ' +@sql2+ 'group by a.chitty_name'
PRINT( @Sql)
EXECUTE (@SQL)
GO
nalnait 2009-10-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 feixianxxx 的回复:]
SQL codedeclare@sqlvarchar(8000)declare@sql2varchar(8000)declare@yearintset@sql=2009set@sql2=''set@sql='
select a.chitty_name as''name'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_¡­
[/Quote].
feixianxxx 2009-10-25
  • 打赏
  • 举报
回复
declare @sql varchar(8000) 
declare @sql2 varchar(8000)
declare @year int
set @sql=2009
set @sql2=''
set @sql='
select a.chitty_name as ''name'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) =' +rtrim(@year)+ 'and datepart(month,a.chitty_addtime) = 1 then b.pro_price else 0 end) as money),0)as ''m1'',
convert(nvarchar,cast(sum(case when datepart(year,a.chitty_addtime) =' +rtrim(@year)+ 'and datepart(month,a.chitty_addtime) = 2 then b.pro_price else 0 end) as money),0)as ''m2''
from chitty a left join proitem b on a.chitty_id=b.chitty_id where 1=1 ' +@sql2+ 'group by a.chitty_name'
PRINT( @Sql)
EXECUTE (@SQL)
GO

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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