select a.局编号,a.读数1-b.读数2 [读数差] from ( select 局编号,sum(读数) 读数1 from temp1 group by 局编号 ) a inner join ( select 局编号,sum(读数) 读数2 from temp2 group by 局编号 ) b on a.局编号=b.局编号
--还是多个啊?select isnull(m.局编号, n.局编号) 局编号 , isnull(m.读数 , 0) - isnull(n.读数,0) 读数差 from (select 局编号,sum(读数) 读数 from temp1 group by 局编号) m full join (select 局编号,sum(读数) 读数 from temp2 group by 局编号) n on m.局编号 = n.局编号
create table temp1(序号 int, 编码 varchar(15), 局编号 varchar(15), 地址 varchar(10),读表日期 datetime,读数 float)insert into temp1 values(1,'2000130784','DDZ034348','R2幢1002房','2007-12-1',1234.50) insert into temp1 values(2,'2000130784','DDZ035389','R2幢1003房','2007-12-2',2598.49) create table temp2(序号 int, 编码 varchar(15), 局编号 varchar(15), 地址 varchar(10),读表日期 datetime,读数 float)insert into temp2 values(1,'2000130784','DDZ034348','R2幢1002房','2008-02-01',2312.50) insert into temp2 values(2,'2000130784','DDZ035389','R2幢1003房','2008-02-01',3212.49) select a.局编号 ,读数差值=sum(a.读数)-sum(b.读数) from temp1 a inner join temp2 b on a.局编号=b.局编号 group by a.局编号局编号 读数差值 --------------- ---------------------- DDZ034348 -1078 DDZ035389 -614(2 行受影响)
select temp1.编码 as 台区编码,temp1.局编号 as 局编号, temp2.读数-temp1.读数 as 差 from temp1 , temp2 where temp1.局编号 = temp2.局编号 我这样写 然后提示 对数据类型而言运算符无效。运算符为 subtract,类型为 nvarchar。 应该改那个为怎么样的类型?
select a.局编号 ,读数差值=sum(a.读数)-sum(b.读数) from temp1 a inner join temp2 b on a.局编号=b.局编号 group by a.局编号局编号 读数差值 --------------- ---------------------- DDZ034348 -1078 DDZ035389 -614(2 行受影响) 出现这个 服务器: 消息 409,级别 16,状态 2,行 1 sum or average aggregate 运算不能以 nvarchar 数据类型作为参数。 服务器: 消息 409,级别 16,状态 1,行 1 sum or average aggregate 运算不能以 nvarchar 数据类型作为参数。 服务器: 消息 403,级别 16,状态 1,行 1 对数据类型而言运算符无效。运算符为 subtract,类型为 nvarchar。 我的类型全部是 nvarchar 应该改下那个地方的 数据类型?
from
(
select 局编号,sum(读数) 读数1 from temp1 group by 局编号
) a
inner join
(
select 局编号,sum(读数) 读数2 from temp2 group by 局编号
) b
on a.局编号=b.局编号
from
(select 局编号,sum(读数) 读数 from temp1 group by 局编号) m
full join
(select 局编号,sum(读数) 读数 from temp2 group by 局编号) n
on m.局编号 = n.局编号
create table temp1(序号 int, 编码 varchar(15), 局编号 varchar(15), 地址 varchar(10),读表日期 datetime,读数 float)insert into temp1 values(1,'2000130784','DDZ034348','R2幢1002房','2007-12-1',1234.50)
insert into temp1 values(2,'2000130784','DDZ035389','R2幢1003房','2007-12-2',2598.49)
create table temp2(序号 int, 编码 varchar(15), 局编号 varchar(15), 地址 varchar(10),读表日期 datetime,读数 float)insert into temp2 values(1,'2000130784','DDZ034348','R2幢1002房','2008-02-01',2312.50)
insert into temp2 values(2,'2000130784','DDZ035389','R2幢1003房','2008-02-01',3212.49)
select a.局编号 ,读数差值=sum(a.读数)-sum(b.读数) from temp1 a inner join temp2 b on a.局编号=b.局编号 group by a.局编号局编号 读数差值
--------------- ----------------------
DDZ034348 -1078
DDZ035389 -614(2 行受影响)
from temp1 , temp2
where temp1.局编号 = temp2.局编号
我这样写 然后提示 对数据类型而言运算符无效。运算符为 subtract,类型为 nvarchar。 应该改那个为怎么样的类型?
--------------- ----------------------
DDZ034348 -1078
DDZ035389 -614(2 行受影响)
出现这个 服务器: 消息 409,级别 16,状态 2,行 1
sum or average aggregate 运算不能以 nvarchar 数据类型作为参数。
服务器: 消息 409,级别 16,状态 1,行 1
sum or average aggregate 运算不能以 nvarchar 数据类型作为参数。
服务器: 消息 403,级别 16,状态 1,行 1
对数据类型而言运算符无效。运算符为 subtract,类型为 nvarchar。
我的类型全部是 nvarchar 应该改下那个地方的 数据类型?