存储过程运行报在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式的错误

fanxiaolin84 2013-12-14 04:11:22
alter PROCEDURE [dbo].[Sourcefenxi](@dDate datetime,@BuilldNo nvarchar(20))

AS

begin
declare @Sql nvarchar(max)
declare @tableName nvarchar(100)
declare @tableName2 nvarchar(100)

--选择最适用的数据表
set @tableName = 'dbo.TMETER' + CAST(datepart(YYYY,@dDate) as varchar(4))
set @tableName2 = 'dbo.TELECTRI' + CAST(datepart(YYYY,@dDate) as varchar(4))
--拼接查询语句
set @Sql = N'



select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from '+@tableName+' as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间
from '+@tableName2+' as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from '+@tableName2+' as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23))='''+ convert(varchar(20),@dDate,23) +''' and a.BUILDNO='+@BuilldNo+'
)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='''+convert(varchar(20),@dDate,23)+''' and f.BUILDNO='+@BuilldNo+')as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO

'
exec(@Sql)
end;

GO

报 在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式。的错误
...全文
478 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2013-12-14
  • 打赏
  • 举报
回复
引用 11 楼 fanxiaolin84 的回复:
[quote=引用 10 楼 yupeigu 的回复:] [quote=引用 8 楼 fanxiaolin84 的回复:] [quote=引用 3 楼 hdhai9451 的回复:] 正确的如下:
alter  PROCEDURE [dbo].[Sourcefenxi](@dDate datetime,@BuilldNo nvarchar(20))    
AS
begin
   declare @Sql nvarchar(max) 
   declare @tableName nvarchar(100)
   declare @tableName2 nvarchar(100)
   
   --选择最适用的数据表    
  set @tableName = 'dbo.TMETER'  + CAST(datepart(YYYY,@dDate) as varchar(4))
  set @tableName2 = 'dbo.TELECTRI' + CAST(datepart(YYYY,@dDate) as varchar(4))
   --拼接查询语句
  set @Sql = N'    
select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from '+@tableName+' as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间 
from '+@tableName2+' as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from '+@tableName2+' as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23)='''+ convert(varchar(20),@dDate,23) +''' and a.BUILDNO='+@BuilldNo+'
)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='''+convert(varchar(20),@dDate,23)+''' and f.BUILDNO='+@BuilldNo+')as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO    
' 
exec(@Sql)      
end;

GO
错误没有报了,但是咱们没有查询结果啊[/quote] 你把那个exec 注释掉: --exec 然后加一个: print @sql 执行后,看看,打印出来的语句是否有问题[/quote] 是有符号条件的记录的[/quote] 要不,给个qq号,方便的话,帮你看看
fanxiaolin84 2013-12-14
  • 打赏
  • 举报
回复
引用 10 楼 yupeigu 的回复:
[quote=引用 8 楼 fanxiaolin84 的回复:] [quote=引用 3 楼 hdhai9451 的回复:] 正确的如下:
alter  PROCEDURE [dbo].[Sourcefenxi](@dDate datetime,@BuilldNo nvarchar(20))    
AS
begin
   declare @Sql nvarchar(max) 
   declare @tableName nvarchar(100)
   declare @tableName2 nvarchar(100)
   
   --选择最适用的数据表    
  set @tableName = 'dbo.TMETER'  + CAST(datepart(YYYY,@dDate) as varchar(4))
  set @tableName2 = 'dbo.TELECTRI' + CAST(datepart(YYYY,@dDate) as varchar(4))
   --拼接查询语句
  set @Sql = N'    
select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from '+@tableName+' as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间 
from '+@tableName2+' as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from '+@tableName2+' as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23)='''+ convert(varchar(20),@dDate,23) +''' and a.BUILDNO='+@BuilldNo+'
)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='''+convert(varchar(20),@dDate,23)+''' and f.BUILDNO='+@BuilldNo+')as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO    
' 
exec(@Sql)      
end;

GO
错误没有报了,但是咱们没有查询结果啊[/quote] 你把那个exec 注释掉: --exec 然后加一个: print @sql 执行后,看看,打印出来的语句是否有问题[/quote] 是有符号条件的记录的
LongRui888 2013-12-14
  • 打赏
  • 举报
回复
引用 8 楼 fanxiaolin84 的回复:
[quote=引用 3 楼 hdhai9451 的回复:] 正确的如下:
alter  PROCEDURE [dbo].[Sourcefenxi](@dDate datetime,@BuilldNo nvarchar(20))    
AS
begin
   declare @Sql nvarchar(max) 
   declare @tableName nvarchar(100)
   declare @tableName2 nvarchar(100)
   
   --选择最适用的数据表    
  set @tableName = 'dbo.TMETER'  + CAST(datepart(YYYY,@dDate) as varchar(4))
  set @tableName2 = 'dbo.TELECTRI' + CAST(datepart(YYYY,@dDate) as varchar(4))
   --拼接查询语句
  set @Sql = N'    
select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from '+@tableName+' as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间 
from '+@tableName2+' as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from '+@tableName2+' as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23)='''+ convert(varchar(20),@dDate,23) +''' and a.BUILDNO='+@BuilldNo+'
)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='''+convert(varchar(20),@dDate,23)+''' and f.BUILDNO='+@BuilldNo+')as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO    
' 
exec(@Sql)      
end;

GO
错误没有报了,但是咱们没有查询结果啊[/quote] 你把那个exec 注释掉: --exec 然后加一个: print @sql 执行后,看看,打印出来的语句是否有问题
Andy__Huang 2013-12-14
  • 打赏
  • 举报
回复
那分析一下有没有符合条件的记录?如果不符合where后面的条件是没有记录的
fanxiaolin84 2013-12-14
  • 打赏
  • 举报
回复
引用 3 楼 hdhai9451 的回复:
正确的如下:
alter  PROCEDURE [dbo].[Sourcefenxi](@dDate datetime,@BuilldNo nvarchar(20))    
AS
begin
   declare @Sql nvarchar(max) 
   declare @tableName nvarchar(100)
   declare @tableName2 nvarchar(100)
   
   --选择最适用的数据表    
  set @tableName = 'dbo.TMETER'  + CAST(datepart(YYYY,@dDate) as varchar(4))
  set @tableName2 = 'dbo.TELECTRI' + CAST(datepart(YYYY,@dDate) as varchar(4))
   --拼接查询语句
  set @Sql = N'    
select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from '+@tableName+' as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间 
from '+@tableName2+' as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from '+@tableName2+' as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23)='''+ convert(varchar(20),@dDate,23) +''' and a.BUILDNO='+@BuilldNo+'
)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='''+convert(varchar(20),@dDate,23)+''' and f.BUILDNO='+@BuilldNo+')as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO    
' 
exec(@Sql)      
end;

GO
错误没有报了,但是咱们没有查询结果啊
LongRui888 2013-12-14
  • 打赏
  • 举报
回复
and convert(varchar(20),a.DDate,23))= 改成了 ]and convert(varchar(20),a.DDate,23)= 就行了
LongRui888 2013-12-14
  • 打赏
  • 举报
回复
在改一下:
alter  PROCEDURE [dbo].[Sourcefenxi](@dDate datetime,@BuilldNo nvarchar(20))    

AS

begin
   declare @Sql nvarchar(max) 
   declare @tableName nvarchar(100)
   declare @tableName2 nvarchar(100)
   
   --选择最适用的数据表    
  set @tableName = 'dbo.TMETER'  + CAST(datepart(YYYY,@dDate) as varchar(4))
  set @tableName2 = 'dbo.TELECTRI' + CAST(datepart(YYYY,@dDate) as varchar(4))
   --拼接查询语句
  set @Sql = N'    
 
       
 
select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from '+@tableName+' as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间 
from '+@tableName2+' as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from '+@tableName2+' as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23)='''+ convert(varchar(20),@dDate,23) +''' and a.BUILDNO='+@BuilldNo+'
)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='''+convert(varchar(20),@dDate,23)+''' and f.BUILDNO='+@BuilldNo+')as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO    
 
' 
--exec(@Sql)      
print @sql

end;

GO
LongRui888 2013-12-14
  • 打赏
  • 举报
回复
改了一下,你试试这个:
alter  PROCEDURE [dbo].[Sourcefenxi](@dDate datetime,@BuilldNo nvarchar(20))    

AS

begin
   declare @Sql nvarchar(max) 
   declare @tableName nvarchar(100)
   declare @tableName2 nvarchar(100)
   
   --选择最适用的数据表    
  set @tableName = 'dbo.TMETER'  + CAST(datepart(YYYY,@dDate) as varchar(4))
  set @tableName2 = 'dbo.TELECTRI' + CAST(datepart(YYYY,@dDate) as varchar(4))
   --拼接查询语句
  set @Sql = N'    
 
       
 
select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from '+@tableName+' as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间 
from '+@tableName2+' as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from '+@tableName2+' as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23)='''+ convert(varchar(20),@dDate,23) +''' and a.BUILDNO='+@BuilldNo+'
)t)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='''+convert(varchar(20),@dDate,23)+''' and f.BUILDNO='+@BuilldNo+')as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO    
 
' 
--exec(@Sql)      
print @sql

end;

GO
fanxiaolin84 2013-12-14
  • 打赏
  • 举报
回复
引用 2 楼 yupeigu 的回复:
实在执行时报的错吗?
输入参数执行的时候报错
Andy__Huang 2013-12-14
  • 打赏
  • 举报
回复
正确的如下:
alter  PROCEDURE [dbo].[Sourcefenxi](@dDate datetime,@BuilldNo nvarchar(20))    
AS
begin
   declare @Sql nvarchar(max) 
   declare @tableName nvarchar(100)
   declare @tableName2 nvarchar(100)
   
   --选择最适用的数据表    
  set @tableName = 'dbo.TMETER'  + CAST(datepart(YYYY,@dDate) as varchar(4))
  set @tableName2 = 'dbo.TELECTRI' + CAST(datepart(YYYY,@dDate) as varchar(4))
   --拼接查询语句
  set @Sql = N'    
select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from '+@tableName+' as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间 
from '+@tableName2+' as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from '+@tableName2+' as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23)='''+ convert(varchar(20),@dDate,23) +''' and a.BUILDNO='+@BuilldNo+'
)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='''+convert(varchar(20),@dDate,23)+''' and f.BUILDNO='+@BuilldNo+')as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO    
' 
exec(@Sql)      
end;

GO
LongRui888 2013-12-14
  • 打赏
  • 举报
回复
实在执行时报的错吗?
Andy__Huang 2013-12-14
  • 打赏
  • 举报
回复
declare @dDate datetime,@BuilldNo nvarchar(20)    
set @dDate='2013-12-12'
set @BuilldNo='A0001'
   declare @Sql nvarchar(max) 
   declare @tableName nvarchar(100)
   declare @tableName2 nvarchar(100)
   
   --选择最适用的数据表    
  set @tableName = 'dbo.TMETER'  + CAST(datepart(YYYY,@dDate) as varchar(4))
  set @tableName2 = 'dbo.TELECTRI' + CAST(datepart(YYYY,@dDate) as varchar(4))
   --拼接查询语句
  set @Sql = N'    

select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from '+@tableName+' as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间 
from '+@tableName2+' as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from '+@tableName2+' as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23))='''+ convert(varchar(20),@dDate,23) +''' and a.BUILDNO='+@BuilldNo+'  -->这一行多了一个右“)"
)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='''+convert(varchar(20),@dDate,23)+''' and f.BUILDNO='+@BuilldNo+')as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO    
' 
print(@Sql)      



 
select c.AREAGUID,c.BUILDNO,c.BUILDNAME,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,累计耗热,计划供热,单日供热量,热量单耗,抄表时间 from TBUILD as c,(
select f.AREAGUID ,f.BUILDNO,累计耗电量,当日耗电,电单耗,累计耗水量,当日耗水量,水单耗,f.METERNLRL as 累计耗热 ,f.METERJHGR as 计划供热,f.METERDAN as 单日供热量,f.METERRLDH as 热量单耗, d.抄表时间 from dbo.TMETER2013 as f,
(select a.AREAGUID,a.buildno,a. METERNLLJ as 累计耗电量,a.METERDAY as 当日耗电 ,a.METERDAN as 电单耗,b.METERNLLJ as 累计耗水量,b.METERDAY as 当日耗水量,b.METERDAN as 水单耗,b.DDATE as 抄表时间 
from dbo.TELECTRI2013 as a inner join (select e.BUILDNO,e.AREAGUID,e.DDATE,e.DEVICETYPE, e.METERNLLJ,e.METERDAY,e.METERDAN from dbo.TELECTRI2013 as e where e.DEVICETYPE=11)as b
on a.DDate=b.DDate and a.AREAGUID=b.AREAGUID and a.BUILDNO=b.BUILDNO and a.DEVICETYPE=10
and convert(varchar(20),a.DDate,23)='2013-12-12' and a.BUILDNO=A0001
)d
where f.AREAGUID=d.AREAGUID and f.BUILDNO=d.BUILDNO and f.DDATE=d.抄表时间 and CONVERT(varchar(20),f.DDate,112)='2013-12-12' and f.BUILDNO=A0001)as g
where c.AREAGUID=g.AREAGUID and c.BUILDNO=g.BUILDNO    
 

27,579

社区成员

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

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