1

この質問に対する私の言い回しが間違っているかどうかはわかりませんが、ここに問題があります。私はあなたが下に見るようなテーブルをしなければなりません。2つのテーブルをUNIONする必要がありますが、プロセスでSet1CountをSet2Countで除算します。助けてください。


(注:別のアプローチがすべて一緒にある可能性があることを認識しています。詳細は次のとおりです。両方のテーブルにはまったく同じ数のレコードがあり、2つの異なる関係に基づいて作成されています。結果セットには同じ数のレコードが必要です。オリジナル(結合ではなく個別)。Set1CountはSet2Countで除算する必要があります)


DECLARE @Set1 TABLE
    (
        Set1Count Int,
        Name varchar(50),
        [Month] Int,
        [Year] Int
    )

DECLARE @Set2 TABLE
    (
        Set2Count Int,
        Name varchar(50),
        [Month] Int,
        [Year] Int
    )


SELECT * FROM @Set1
UNION 
SELECT * FROM @Set2 
4

2 に答える 2

2

私はこれがすべきだと推測しています:

DECLARE @Set1 TABLE
    (
        Set1Count Int,
        Name varchar(50),
        [Month] Int,
        [Year] Int
    )

DECLARE @Set2 TABLE
    (
        Set2Count Int,
        Name varchar(50),
        [Month] Int,
        [Year] Int
    )


SELECT S1.[Name], S1.[Month], S1.Year, Set1Count/NULLIF(Set2Count,0) Div
FROM @Set1 S1
INNER JOIN @Set2 S2
ON S1.[Name] = S2.[Name] AND S1.[Month] = S2.[Month]
AND S1.[Year] = S2.[Year]

を使用しているため、両方のテーブルに同じレコードがある場合、これは正しく機能することに注意してくださいINNER JOIN。そうでない場合は、おそらくを使用する必要がありますFULL JOIN

于 2012-08-21T17:26:13.433 に答える
0

最初の選択を変更して2番目の列を含め、2null as set2Count番目の選択を変更して最初の位置に別の列を含めますnull as set1Count。ただし、値を分割する前に、セットを結合する方法を決定する必要があります。彼らは年と月に参加していますか?あるいは、ユニオンクエリはまったく必要ないかもしれませんが、それらを結合してから分割する必要がありますか?

于 2012-08-21T17:21:32.980 に答える