同一实例中不同数据库中相同结构的表如何合并在到一个新的数据库中的一张表中?

时间:2022-04-01 14:50:52
问题是这样的:

1.我在一个数据库实例中OUTPUT有三个数据库:DB1,DB2,DB3,三个数据库表结构都相同,每个库中的每个表含有自增字段ID,且为主键;(OUTPUT中的数据库是通过DTS分别从各分站同步复制过来的数据)

2.现希望针对各分站的数据进行汇总查询,该如何做?是将这些数据库合并到一个新库中吗?(主键可能会有重复,产生冲突),还是建立视图?那种方法最容易实现??

3.希望实现能具体一点,谢谢!

10 个解决方案

#1


select * from DB1.dbo.tablename
union all
select * from DB2.dbo.tablename
union all
select * from DB3.dbo.tablename

#2


select xxx FROM 库名.dbo.表名
就可以在当前库下访问同机器的其它库了。就像在一个库中访问表一样。其它的不用说了吧

#3


建立视图或存储过程,通过联合查询Union 将各库表组合成逻辑上的一个表。
view主要用于固定的参数项,而proc可用于动态的参数项查询。

#4


DB1:billinfo表:
ID billcode num1   num2
1    24    1010   789
2    25    23     67
3    26    45     134

DB2:billinfo表
ID billcode num1   num2
1    23      45     34
2    24      36     32
3    25      675    634

DB3:billinfo表
ID billcode  num1  num2
1    65      321    2323
2    24      232    434
3    26      232    434

我现在想将DB1,db2,db3 中的表billinfo 按billcode进行分类汇总,将三个数据库中billcode相同的记录的num1,num2求和????

能不能用一条SQL实现啊???


#5


USE DB1--假当前在DB1下

SELECT billcode ,SUM(num1) Num1,SUM(num2) Num2
FROM (
SELECT * FROM billinfo
UNION ALL 
SELECT * FROM Db2.dbo.billinfo
UNION ALL
SELECT * FROM Db3.dbo.billinfo
) x
GROUP BY billcode

#6


感谢楼上的fcuandy(猪头年年有,近期特别多) !

上述语句在SQL SERVER 查询分析器中通过!

但我在ASP页面中进行如下操作会报错误?
***************************************
dim conn 
dim connstr 
dim rs

set conn = server.createobject("adodb.connection") 
connstr = "Driver={SQL Server};SERVER=10.97.0.13;UID=sa;PWD=sa;database="+database
conn.open connstr 
set rs = server.createobject("adodb.recordset") 

sql="SELECT CIGBRANDCODE, CIGBRAND, SUM(OUTNUM) as OUTNUM ,sum(OUTNUM1) as OUTNUM1 FROM (SELECT * FROM billCIGCFG UNION ALL SELECT * FROM QJCF57_OUTFACT.dbo.billCIGCFG UNION ALL SELECT * FROM QJCF58_OUTFACT.dbo.billCIGCFG ) x GROUP BY CIGBRANDCODE"

rs.open sql,conn,1,1 

报如下错误:

Microsoft VBScript 编译器错误 错误 '800a03f6' 
缺少 'End' 

/iisHelp/common/500-100.asp,行242 

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21' 

ODBC 驱动程序不支持所需的属性。 

/show.asp,行71 


?????
什么原因???????????????//

#7


asp中的sql字串是不能换行的,不像c++,c#,sql这样.
要行一条写完,要么用字符串加的方式连起来,要么用换行的写法.

#8


建个视图就好.

#9


解决问题了:

在ASP中将连接串改为SQLOLEDB连接:
connstr = "Driver={SQL Server};SERVER=10.97.0.13;UID=sa;PWD=sa;database="+database
改成如下:
connstr = "PROVIDER=SQLOLEDB;DATA SOURCE=10.97.0.13;UID=sa;PWD=sa;DATABASE="+database

#10


感谢
fcuandy(猪头年年有,近期特别多)

#1


select * from DB1.dbo.tablename
union all
select * from DB2.dbo.tablename
union all
select * from DB3.dbo.tablename

#2


select xxx FROM 库名.dbo.表名
就可以在当前库下访问同机器的其它库了。就像在一个库中访问表一样。其它的不用说了吧

#3


建立视图或存储过程,通过联合查询Union 将各库表组合成逻辑上的一个表。
view主要用于固定的参数项,而proc可用于动态的参数项查询。

#4


DB1:billinfo表:
ID billcode num1   num2
1    24    1010   789
2    25    23     67
3    26    45     134

DB2:billinfo表
ID billcode num1   num2
1    23      45     34
2    24      36     32
3    25      675    634

DB3:billinfo表
ID billcode  num1  num2
1    65      321    2323
2    24      232    434
3    26      232    434

我现在想将DB1,db2,db3 中的表billinfo 按billcode进行分类汇总,将三个数据库中billcode相同的记录的num1,num2求和????

能不能用一条SQL实现啊???


#5


USE DB1--假当前在DB1下

SELECT billcode ,SUM(num1) Num1,SUM(num2) Num2
FROM (
SELECT * FROM billinfo
UNION ALL 
SELECT * FROM Db2.dbo.billinfo
UNION ALL
SELECT * FROM Db3.dbo.billinfo
) x
GROUP BY billcode

#6


感谢楼上的fcuandy(猪头年年有,近期特别多) !

上述语句在SQL SERVER 查询分析器中通过!

但我在ASP页面中进行如下操作会报错误?
***************************************
dim conn 
dim connstr 
dim rs

set conn = server.createobject("adodb.connection") 
connstr = "Driver={SQL Server};SERVER=10.97.0.13;UID=sa;PWD=sa;database="+database
conn.open connstr 
set rs = server.createobject("adodb.recordset") 

sql="SELECT CIGBRANDCODE, CIGBRAND, SUM(OUTNUM) as OUTNUM ,sum(OUTNUM1) as OUTNUM1 FROM (SELECT * FROM billCIGCFG UNION ALL SELECT * FROM QJCF57_OUTFACT.dbo.billCIGCFG UNION ALL SELECT * FROM QJCF58_OUTFACT.dbo.billCIGCFG ) x GROUP BY CIGBRANDCODE"

rs.open sql,conn,1,1 

报如下错误:

Microsoft VBScript 编译器错误 错误 '800a03f6' 
缺少 'End' 

/iisHelp/common/500-100.asp,行242 

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21' 

ODBC 驱动程序不支持所需的属性。 

/show.asp,行71 


?????
什么原因???????????????//

#7


asp中的sql字串是不能换行的,不像c++,c#,sql这样.
要行一条写完,要么用字符串加的方式连起来,要么用换行的写法.

#8


建个视图就好.

#9


解决问题了:

在ASP中将连接串改为SQLOLEDB连接:
connstr = "Driver={SQL Server};SERVER=10.97.0.13;UID=sa;PWD=sa;database="+database
改成如下:
connstr = "PROVIDER=SQLOLEDB;DATA SOURCE=10.97.0.13;UID=sa;PWD=sa;DATABASE="+database

#10


感谢
fcuandy(猪头年年有,近期特别多)