1つの最終テーブルを作成するために2つのテーブルを結合したいと思います。SQLサーバー内の異なる行数の2つのテーブルを結合します
クエリ1
select DisplayName, Category, NoOfLevels
, count(Underoverestimate) as OverCount
, Avg(CaseDuration - EstDuration) as ODA
from DSU
where yearid between '2016' and '2018'
and underoverestimate = 'Over'
group by DisplayName, Category, nooflevels
クエリ2
select DisplayName, Category, NoOfLevels
, count(Underoverestimate) as UnderCount
, Avg(CaseDuration - EstDuration) as ODA
from DSU
where yearid between '2016' and '2018'
and underoverestimate = 'Under'
group by DisplayName, Category, nooflevels
クエリ1の結果
DisplayName|Category |NoOfLevels|OverCount|ODA
Bran, J. |Fusion |Single |2 |102.5
Bran, J. |Decompression| |1 |13
Caron, M. |Fusion |Multi |9 |88.444
クエリ2件の結果
DisplayName|Category |NoOfLevels|UnderCount|ODA
Curry, S. |Fusion |Multi |2 |105
Bran, J. |Fusion |Single |1 |115.5
Bran, J. |Decompression| |4 |131
Caron, M. |Decompression| |5 |66
私は最終的な結果は持ちたい何
は、すべてのユニークなのDisplayName、Catergory、およびNoOfLevelsを保つが、クエリ2
募集最終結果からクエリ1と「過少に」と「ODA」から「オーバー」とODAを追加することです
DisplayName|Category |NoOfLevels|OverCount|ODA |UnderCount|ODA
Bran, J. |Fusion |Single |2 |102.5 |1 |115.5
Bran, J. |Decompression| |1 |13 |4 |131
Caron, M. |Decompression| | | |5 |66
Caron, M. |Fusion |Multi |9 |88.444 | |
Curry, S. |Fusion |Multi | | |5 |66
私は、クエリ1と2で一時テーブルを作成し、その後、私は必要なデータを報告するために、新たなselect文を作ることによって、これを行うことを試みました。
Select #QueryOne.DisplayName, #QueryOne.Category,
#QueryOne.NoOfLevels, count(#QueryTwo.UnderCount) as UnderCount
from #QueryOne
join #QueryTwo
on #QueryOne.DisplayName = #QueryTwo.DisplayName
group by #QueryOne.DisplayName, #QueryOne.Category,
#QueryOne.NoOfLevels
order by #QueryOne.DisplayName, #QueryOne.Category,
#QueryOne.NoOfLevels
私の結果は間違っています。 (私はまだクエリをテストしていますので、私は、私はまだ望んでいたすべての列が含まれていませんでしたが、テストでは、私は結果が間違っている気づい)
DisplayName|Category |NoOfLevels|UnderCount|
Bran, J. |Fusion |Single |6 |
Caron, M. |Fusion |Multi |9 |
Bran, J. |Decompression| |6 |
Curry, S. |Fusion |Multi |12 |
Caron, M. |Decompression| |9 |
最初の3列は正しいように見えますが、「過少に」値が正しくありません。このクエリの 'COUNT'関数は、Branの行の合計数を私に与えています。 'SUM'を使用すると間違った情報になります。私は「COUNT(」その後、私は私に次のような結果を与えることにより、グループ内の#QueryTwo.UnderCountを配置する必要があり削除した場合、最終的には、:
DisplayName|Category |NoOfLevels|UnderCount|
Bran, J. |Fusion |Single |1 |
Bran, J. |Fusion |Single |2 |
Bran, J. |Decompression| |1 |
Bran, J. |Decompression| |2 |
Caron, M. |Decompression| |3 |
Caron, M. |Decompression| |2 |
Caron, M. |Fusion |Multi |3 |
Caron, M. |Fusion |Multi |1 |
を私はstackoverflowのが、避難所「を介して、この答えを探してみました同じような問題が見つかったので、2つのテーブルに参加することを尋ねる質問がたくさんありましたが、それらの問題は同じではありません... UNIONを考慮しましたが、それが正しい次のステップであれば私の頭を包み込むようです。問題の一部は、クエリ1にはクエリ2にないDisplayNamesがあり、逆の場合はその逆であるということです。
詳細を明らかにする必要がある場合は、私の脳がマッシュアップしてください。
両方のテーブルから
をご覧ください:) – BICube
を最初のクエリは、私が望んでいたすべての必要な情報を提供し、いくつかのT1でDisplayNamesなどがあるので、しかし、それは特定の列を選択することが困難になりますt2では、t1.displaynamesを使用してもすべての組み合わせが表示されるわけではありません。しかし、あなたが提示した2番目のクエリは完全に機能します!私は以前の仕事にその思考プロセスを追加する予定です!ありがとうございました! – MartyB