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
union all
select * from DB2.dbo.tablename
union all
select * from DB3.dbo.tablename
#2
select xxx FROM 库名.dbo.表名
就可以在当前库下访问同机器的其它库了。就像在一个库中访问表一样。其它的不用说了吧
就可以在当前库下访问同机器的其它库了。就像在一个库中访问表一样。其它的不用说了吧
#3
建立视图或存储过程,通过联合查询Union 将各库表组合成逻辑上的一个表。
view主要用于固定的参数项,而proc可用于动态的参数项查询。
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实现啊???
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
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
?????
什么原因???????????????//
上述语句在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
在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(猪头年年有,近期特别多)
fcuandy(猪头年年有,近期特别多)
#1
select * from DB1.dbo.tablename
union all
select * from DB2.dbo.tablename
union all
select * from DB3.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可用于动态的参数项查询。
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实现啊???
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
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
?????
什么原因???????????????//
上述语句在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
在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(猪头年年有,近期特别多)
fcuandy(猪头年年有,近期特别多)