1

SQLServer2008とTalendを使用しています

私が直面している問題は、2つの異なるデータベースに2つのテーブルがあり、それらに同じフィールドがあり、それらをクエリして特定の基準を満たそうとしていることです。

ユーザーには、テーブルとすべてを表示するための適切な権限があります。

どちらのテーブルにもいくつかのフィールドが必要なので、作業を楽にするためにビューを作成しました。DbUSAビューを作成しました

(ビュー内)

"SELECT IDCUST, NAMECUST,CODETERM,AMTCRLIMT,DATELASTIV,AMTBALDUEH
FROM TABLE!
WHERE COUNTRYCODE = 'USA' OR COUNTRYCODE ="U.S.A" //this is for USA server 
only the other doesn't have the WHERE clause. 

ここで、他のDB('MAIN')を使用してこのビューを照会します。

基準は、IDCUSTが同じである場合、「USA」データベースの行が必要なことです。

私は試した:

SELECT *  
FROM USA.dbo.VIEWUSA 
UNION 
SELECT *  
FROM MAIN.dbo.VIEWMAIN
WHERE MAIN.dbo.IDCUST <> USA.dbo.VIEWUSA.IDCUST

USA.dbo.VIEWUSA.IDCUSTが適切でなかったと言っても、エラーが発生します。

JOINとして試しましたが、結合がまったく機能しませんでした(最大行数は約6kで、停止する前は100kでクエリを実行していました)。

4

4 に答える 4

2

ユニオンオールが最善のアプローチだと思いますが、少し調整する必要があります。

select *
from usa.dbo.ViewUSA
union all
select *
from MAIN.dbo.VIEWMAIN vm
where vm.idcust not in (select idcust from usa.dbo.ViewUSA)
于 2012-10-05T20:23:31.370 に答える
1

ユニオンを使用すると、セットから重複する行を削除できます。ユニオンは、各選択の列が同じデータ型であることも望んでいます。テーブル内で同じ名前が付けられている列のデータ型が同じである場合、これにより、必要な出力が生成されます。

SELECT IDCUST
    ,NAMECUST
    ,CODETERM
    ,AMTCRLIMT
    ,DATELASTIV
    ,AMTBALDUEH
FROM USA.dbo.VIEWUSA

UNION

SELECT IDCUST
    ,NAMECUST
    ,CODETERM
    ,AMTCRLIMT
    ,DATELASTIV
    ,AMTBALDUEH
FROM MAIN.dbo.VIEWMAIN
于 2012-10-05T20:19:02.247 に答える
1

列名がデータ型と同じであり、結合構文よりも構文のような結合を探していると仮定します...

VIEWUSAにエントリがないVIEWMAINのすべてのレコード。

SELECT customer_id, customer_name
FROM MAIN.dbo.VIEWMAIN
minus
SELECT customer_id, customer_name  
FROM USA.dbo.VIEWUSA 

VIEWMAINにな​​いVIEWUSAのすべてのレコード

SELECT customer_id, customer_name
FROM MAIN.dbo.VIEWUSA
minus
SELECT customer_id, customer_name  
FROM USA.dbo.VIEWMAIN

両方のテーブルにのみ存在するレコード

SELECT customer_id, customer_name
FROM MAIN.dbo.VIEWUSA
intersect
SELECT customer_id, customer_name  
FROM USA.dbo.VIEWMAIN
于 2012-10-05T20:24:28.937 に答える
0

私が正しく理解していれば、これはあなたが望むものです。これにより、IDCUSTが同じである両方のテーブルからすべてのデータが取得されます。

編集:これを試してください

SELECT * 
FROM USA.dbo.VIEWUSA a 
WHERE a.IDCUST NOT IN (SELECT DISTINCT IDCUST FROM MAIN.dbo.VIEWMAIN)
于 2012-10-05T20:15:51.867 に答える