2017-07-27 11 views
0

GROUP BY関数に問題があります。私は目的のためにDISTINCT関数を使ってみましたが、すべての検索でGROUP BY関数を使ってみました。SQL GroupがJoinで作業していない

私は3つのテーブルを持っています。 Tbl1とTbl2は同じ列を持ちます。 Tbl 3は異なるカラムを持っていますが、基本的に3つのテーブルをすべて一緒に結合しようとしています。

しかし、私はエラーを取得していた列の1、Tbl3.A

で重複を除外するためのResultSetをたい:列「DB1.dbo.Tbl2.C」を選択して無効ですリストは集約関数またはGROUP BY句のいずれにも含まれていないためです。ここで

は完全なクエリの:

SELECT Tbl3.A, Tbl1.C, Tbl1.B 
FROM DB1.dbo.Tbl1 
LEFT JOIN 
DB2.dbo.Tbl3 ON Tbl1.B = Tbl3.A 
WHERE …. 

UNION 

SELECT Tbl3.A, Tbl2.C, Tbl2.B 
FROM DB1.dbo.Tbl2 
LEFT JOIN 
DB2.dbo.Tbl3 ON Tbl2.B = Tbl3.A 

WHERE ….. 

GROUP BY Tbl3.A 
+0

タグ:このような何か。 –

+0

Tbl3.Aでグループ化する場合は、列Tbl1.CとTbl1.Bを集計する必要があります。 – Eric

答えて

0

は、サブクエリを使用してください。使用しているデータベースとの

SELECT A, MAX(C) as C, MAX(B) as B 
FROM ((SELECT Tbl3.A, Tbl1.C, Tbl1.B 
     FROM DB1.dbo.Tbl1 LEFT JOIN 
      DB2.dbo.Tbl3 
      ON Tbl1.B = Tbl3.A 
     WHERE …. 
    ) UNION 
     (SELECT Tbl3.A, Tbl2.C, Tbl2.B 
     FROM DB1.dbo.Tbl2 LEFT JOIN 
      DB2.dbo.Tbl3 
      ON Tbl2.B = Tbl3.A 
     WHERE ….. 
    ) 
    ) t 
GROUP BY A; 
+0

@TomD。 。 。その後、 'as'を使って別の名前を付けます。 –

0
SELECT NewTbl3.A, Tbl1.C, Tbl1.B 
FROM DB1.dbo.Tbl1 
LEFT JOIN 
(SELECT DISTINCT Tbl3.A) AS NewTbl3 
ON Tbl1.B = NewTbl3.A 
WHERE …. 

UNION 

SELECT NewTbl3.A, Tbl2.C, Tbl2.B 
FROM DB1.dbo.Tbl2 
LEFT JOIN 
(SELECT DISTINCT Tbl3.A) AS NewTbl3 
ON Tbl2.B = NewTbl3.A 

WHERE ….. 

GROUP BY NewTbl3.A 
関連する問題