表1:
指标代码 数量
ak3000 20
表2:
指标名 数量
[ak3000]指标 30我想要做的是:
首先将表2中的指标名改为 指标代码 指标名
即 [ak3000]指标 ak3000 指标
然后
得到表1和表2对应项的差值
指标代码 数量
ak3000 20
表2:
指标名 数量
[ak3000]指标 30我想要做的是:
首先将表2中的指标名改为 指标代码 指标名
即 [ak3000]指标 ak3000 指标
然后
得到表1和表2对应项的差值
(指标代码 Varchar(10),
数量 Int)
Insert 表1 Select 'ak3000', 20Create Table 表2
(指标名 Nvarchar(10),
数量 Int)
Insert 表2 Select N'[ak3000]指标', 30
GO
Select
B.指标代码,
B.指标名,
B.数量 - A.数量 As 差值
From
表1 A
Inner Join
(Select
Substring(指标名, 2, CharIndex(']', 指标名) - 2) As 指标代码,
Stuff(指标名, 1, CharIndex(']', 指标名), '') As 指标名,
数量
From 表2) B
On A.指标代码 = B.指标代码
GO
Drop Table 表1, 表2
--Result
/*
指标代码 指标名 差值
ak3000 指标 10
*/
(指标代码 Varchar(10),
数量 Int)
Insert 表1 Select 'ak3000', 20Create Table 表2
(指标名 Nvarchar(10),
数量 Int)
Insert 表2 Select N'[ak3000]指标', 30
GO
Select
B.指标名,
B.数量 - A.数量 As 差值
From
表1 A
Inner Join
表2 B
On CharIndex('[' + A.指标代码 + ']', B.指标名) > 0
GO
Drop Table 表1, 表2
--Result
/*
指标名 差值
[ak3000]指标 10
*/
select b.*,b.数量-a.数量 as 差值 from 表2 b inner join
(
select 数量,'['+指标代码+']'+'指标' as 指标名 from 表1
) a on b.指标名=a.指标名
substr(b.指标名,charindex(b.指标名,']')+1) as 指标名,
(b.数量-a.数量) as 数量
from 表1 a,表2 b
where b.指标代码=substr(b.指标名,2,charindex(b.指标名,']')-2)
'substr' 不是可以识别的 函数名。为什么我运行后是这个结果,是什么地方需要启用吗?
'可以把表一加上[]及指标。
select b.*,b.数量-a.数量 as 差值 from 表2 b inner join
(
select 数量,'['+指标代码+']'+'指标' as 指标名 from 表1
) a on b.指标名=a.指标名 '我运行后的结果是: 服务器: 消息 195,级别 15,状态 10,行 2
'substr' 不是可以识别的 函数名。为什么我运行后是这个结果,是什么地方需要启用吗?
服务器: 消息 195,级别 15,状态 10,行 2
'substr' 不是可以识别的 函数名。为什么我运行后是这个结果,是什么地方需要启用吗?
-------不是什麼地方需要啟用,是他們寫錯了,MS SQL中只有substring,沒有substr.