还是不明白你们是怎么汇集的我们的多套数据,区分是这样的,建个视图类似这样 SELECT 'A'+A.ExcelServerRCID FROM [数据库A].[dbo].[表名] UNION ALL SELECT 'B'+A.ExcelServerRCID FROM [数据库B].[dbo].[表名]类似这样,到时查的时候,同名字段也会因为前缀不同而不同
1不方便,2的话,能告诉我具体怎么写,怎么弄吗,我的表名 [生产操作单_主表]和 [生产操作单_明细]给你一个例子,你参考一下,因为是加TR,你最好跟运维人员沟通一下。 ID 是你这张表的 PK,你自己修改一下。if exists(select * from sysobjects where xtype ='u' and name ='mytable') drop table mytable go create table mytable (id int identity, code varchar(20) , name varchar(30)) go create trigger mytable_tr on mytable after insert as begin update mytable set code = 'A' + code where id in (select id from inserted) end go insert into mytable(code , name) values('201401010001' , '这是第一个测试数据') insert into mytable(code , name) values('201401010002' , '这是第二个测试数据') go select * from mytable goid code name ----------- -------------------- ------------------------------ 1 A201401010001 这是第一个测试数据 2 A201401010002 这是第二个测试数据(2 行受影响)
CREATE VIEW [汇总表] AS SELECT 'A'+A.ExcelServerRCID FROM [数据库A].[dbo].[表名] UNION ALL SELECT 'B'+A.ExcelServerRCID FROM [数据库B].[dbo].[表名] --每多一个账套,就加一个UNION ALL如上所说,关键是 你们要能够把汇总查询转到这个视图上
2.如果1不方便,可以考虑在这些表上加个TR,每次插入新的数据,直接在这列前面加一个标记, RC变成 RCA和RCB 。
SELECT 'A'+A.ExcelServerRCID FROM [数据库A].[dbo].[表名]
UNION ALL SELECT 'B'+A.ExcelServerRCID FROM [数据库B].[dbo].[表名]类似这样,到时查的时候,同名字段也会因为前缀不同而不同
ID 是你这张表的 PK,你自己修改一下。if exists(select * from sysobjects where xtype ='u' and name ='mytable')
drop table mytable
go
create table mytable (id int identity, code varchar(20) , name varchar(30))
go
create trigger mytable_tr
on mytable after insert
as
begin
update mytable set code = 'A' + code
where id in (select id from inserted)
end go
insert into mytable(code , name) values('201401010001' , '这是第一个测试数据')
insert into mytable(code , name) values('201401010002' , '这是第二个测试数据')
go
select * from mytable
goid code name
----------- -------------------- ------------------------------
1 A201401010001 这是第一个测试数据
2 A201401010002 这是第二个测试数据(2 行受影响)
但是现在有个问题,这个值是在软件本身已经产生值的基础上后加了个前缀,但是软件只认它自己生成的值,你把这个值加前缀后,软件里就看不到创建的这张表,从数据库里可以看到,从数据库里把前缀删掉,软件里就又能看到这张表了
如果没有,你试试把字段的第一位换成 a b c 这样子测试下,看是否会显示。
如果不是通过软件合并的,说明软件本身就不支持合并数据,说不定它程序中就固定了位数和前缀。
除非有设置或能改动程序,你唯一的希望是合并时修改 字母前缀+年月日+顺序号 中的顺序号:
先合并到临时表中,变成 (帐套号,[字母前缀+年月日],顺序号) 三字段,然后用 ROW_NUMBER() OVER(PARTITION BY [字母前缀+年月日] ORDER BY 帐套号,顺序号) 生成新的顺序号。
软件不能修改只能重算ExcelServerRCID。
AS
SELECT 'A'+A.ExcelServerRCID FROM [数据库A].[dbo].[表名]
UNION ALL SELECT 'B'+A.ExcelServerRCID FROM [数据库B].[dbo].[表名]
--每多一个账套,就加一个UNION ALL如上所说,关键是 你们要能够把汇总查询转到这个视图上