如何自定义 sql 字段的增长规律,请帮忙!!!!

gk214 2014-10-17 07:45:18
sql数据库几个帐套里都有同样的表,其中都有一个字段ExcelServerRCID,增长规律:字母前缀+年月日+顺序号比如:rc201410250001,现在有个问题就是,不同帐套里会出现ExcelServerRCID值相同的情况,怎样改变该字段的增长规律,不同帐套,规律也不同,这样就不会出现相同值了,
比如第一个帐套里:rA+年月日+顺序号

第二个帐套里:rB+年月日+顺序号.....
因为这几个帐套中的表,都要往外部数据源同一帐套中同一张表映射新建删除表,这些重复值最终在外部同一个帐套里出现,这样不同帐套映射的表里数据,因为ExcelServerRCID值相同,会混在一个条目里,从软件里看,就是别的表的内容混到这张表里
...全文
455 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-10-24
  • 打赏
  • 举报
回复
#27: 你没看 #15、#18 的回复!
还在加载中灬 2014-10-24
  • 打赏
  • 举报
回复
CREATE VIEW [汇总表]
AS
SELECT 'A'+A.ExcelServerRCID FROM [数据库A].[dbo].[表名]
UNION ALL SELECT 'B'+A.ExcelServerRCID FROM [数据库B].[dbo].[表名]
--每多一个账套,就加一个UNION ALL
如上所说,关键是 你们要能够把汇总查询转到这个视图上
Tiger_Zhao 2014-10-24
  • 打赏
  • 举报
回复
不用想了,如果软件可以修改,无论加前缀还是建视图都可以。
软件不能修改只能重算ExcelServerRCID。
gk214 2014-10-24
  • 打赏
  • 举报
回复
引用 23 楼 ky_min 的回复:
看来,这个ExcelServerRCID已是作为软件的主键,而不是普通的流水号~~ 你可以把你们需要的查询,建个视图类似这样,汇总查询直接从这里面查询~
您好,比如,我外部服务器X有三个帐套,帐套A,帐套B,本身帐套C,三个帐套都有一个表:生产操作单_明细,每张表里的字段都相同,请问如何建立视图把这三个帐套里的数据集中到一个视图里,怎么写呢?
Tiger_Zhao 2014-10-20
  • 打赏
  • 举报
回复
你怎么做“映射成合并数据”的?
如果不是通过软件合并的,说明软件本身就不支持合并数据,说不定它程序中就固定了位数和前缀。
除非有设置或能改动程序,你唯一的希望是合并时修改 字母前缀+年月日+顺序号 中的顺序号:
先合并到临时表中,变成 (帐套号,[字母前缀+年月日],顺序号) 三字段,然后用 ROW_NUMBER() OVER(PARTITION BY [字母前缀+年月日] ORDER BY 帐套号,顺序号) 生成新的顺序号。
还在加载中灬 2014-10-20
  • 打赏
  • 举报
回复
看来,这个ExcelServerRCID已是作为软件的主键,而不是普通的流水号~~ 你可以把你们需要的查询,建个视图类似这样,汇总查询直接从这里面查询~
Tiger_Zhao 2014-10-17
  • 打赏
  • 举报
回复
最终映射成合并数据时,不管是查询还是插入语句,不同的来源就用不同的前缀替换掉、或者长度够的话直接加前缀。

卖水果的net 版主 2014-10-17
  • 打赏
  • 举报
回复
引用 11 楼 gk214 的回复:
[quote=引用 8 楼 wmxcn2000 的回复:] 1. 看看软件有没有这样的设置,A 账套的编号从 10000 开始,B 账套从20000 开始 ,当然了,每个账套每天不能超过 10000条。 2.如果1不方便,可以考虑在这些表上加个TR,每次插入新的数据,直接在这列前面加一个标记, RC变成 RCA和RCB 。
1不方便,2的话,能告诉我具体怎么写,怎么弄吗,我的表名 [生产操作单_主表]和 [生产操作单_明细][/quote] 给你一个例子,你参考一下,因为是加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
go

id          code                 name
----------- -------------------- ------------------------------
1           A201401010001        这是第一个测试数据
2           A201401010002        这是第二个测试数据

(2 行受影响)


AcHerat 元老 2014-10-17
  • 打赏
  • 举报
回复
引用 11 楼 gk214 的回复:
[quote=引用 8 楼 wmxcn2000 的回复:] 1. 看看软件有没有这样的设置,A 账套的编号从 10000 开始,B 账套从20000 开始 ,当然了,每个账套每天不能超过 10000条。 2.如果1不方便,可以考虑在这些表上加个TR,每次插入新的数据,直接在这列前面加一个标记, RC变成 RCA和RCB 。
1不方便,2的话,能告诉我具体怎么写,怎么弄吗,我的表名 [生产操作单_主表]和 [生产操作单_明细][/quote] 你可以参考10楼的用法!既然在数据表里实现比较难,那么就在汇总为一张表的时候做个区分,将帐套前缀加到字段中去,方便区分是哪个帐套的,在查询的时候也能区分到帐套。
gk214 2014-10-17
  • 打赏
  • 举报
回复
引用 8 楼 wmxcn2000 的回复:
1. 看看软件有没有这样的设置,A 账套的编号从 10000 开始,B 账套从20000 开始 ,当然了,每个账套每天不能超过 10000条。 2.如果1不方便,可以考虑在这些表上加个TR,每次插入新的数据,直接在这列前面加一个标记, RC变成 RCA和RCB 。
1不方便,2的话,能告诉我具体怎么写,怎么弄吗,我的表名 [生产操作单_主表]和 [生产操作单_明细]
还在加载中灬 2014-10-17
  • 打赏
  • 举报
回复
还是不明白你们是怎么汇集的 我们的多套数据,区分是这样的,建个视图类似这样 SELECT 'A'+A.ExcelServerRCID FROM [数据库A].[dbo].[表名] UNION ALL SELECT 'B'+A.ExcelServerRCID FROM [数据库B].[dbo].[表名] 类似这样,到时查的时候,同名字段也会因为前缀不同而不同
gk214 2014-10-17
  • 打赏
  • 举报
回复
引用 7 楼 ky_min 的回复:
那样的话,几个帐套就要加几个,也不灵活 因为这几个帐套中的表,都要往外部数据源同一帐套中同一张表映射新建删除表 这一步,具体是怎么做的呢? 是跨数据库查询吗,如果是,在查询上加别名就可以了~
这几个帐套里的表和外部被映射的表是一样的,主要目的是把数据集中到一张表里方便查询
卖水果的net 版主 2014-10-17
  • 打赏
  • 举报
回复
1. 看看软件有没有这样的设置,A 账套的编号从 10000 开始,B 账套从20000 开始 ,当然了,每个账套每天不能超过 10000条。 2.如果1不方便,可以考虑在这些表上加个TR,每次插入新的数据,直接在这列前面加一个标记, RC变成 RCA和RCB 。
还在加载中灬 2014-10-17
  • 打赏
  • 举报
回复
那样的话,几个帐套就要加几个,也不灵活 因为这几个帐套中的表,都要往外部数据源同一帐套中同一张表映射新建删除表 这一步,具体是怎么做的呢? 是跨数据库查询吗,如果是,在查询上加别名就可以了~
gk214 2014-10-17
  • 打赏
  • 举报
回复
引用 5 楼 ky_min 的回复:
[quote=引用 4 楼 gk214 的回复:] 我用的是勤哲的软件,它ExcelServerRCID这个字段从软件里是看不到的,只有从数据库中才看出有这个字段,软件里创建表的时候自己没加这个字段,保存以后数据库里看就有这个字段,而且每张表都有
这么不人性~~ 可以不可以考虑,用触发器,自己修改~~[/quote] 这个太专业,我不懂怎么弄啊
还在加载中灬 2014-10-17
  • 打赏
  • 举报
回复
引用 4 楼 gk214 的回复:
我用的是勤哲的软件,它ExcelServerRCID这个字段从软件里是看不到的,只有从数据库中才看出有这个字段,软件里创建表的时候自己没加这个字段,保存以后数据库里看就有这个字段,而且每张表都有
这么不人性~~ 可以不可以考虑,用触发器,自己修改~~
gk214 2014-10-17
  • 打赏
  • 举报
回复
我用的是勤哲的软件,它ExcelServerRCID这个字段从软件里是看不到的,只有从数据库中才看出有这个字段,软件里创建表的时候自己没加这个字段,保存以后数据库里看就有这个字段,而且每张表都有
还在加载中灬 2014-10-17
  • 打赏
  • 举报
回复
你用的是什么软件呢?一般软件对这个都有个设置的地方~
xiaodongni 2014-10-17
  • 打赏
  • 举报
回复
在价格前缀表名。就可以了。
hleb231 2014-10-17
  • 打赏
  • 举报
回复
前面英文字母一般是单据类型代号。 在单据类型设置里找找
加载更多回复(8)

34,591

社区成员

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

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