1

これは表2のデータの下にあります

ID2        |    Count2
-----------+-----------
1345653         5
534140349       5
682527813       4
687612723       3
704318001       5

これは、Table1 の以下のデータです。

ID1        |    Count1
-----------+-----------
1345653         4
704318001       4
  1. 上記の表を見ると、これ1345653は Table2 にはあります5 countが、 Table1 にはあります。4 count同じように、この ID704318001は Table2 にあります5 countが、Table1 にはあり4 countます。
  2. また、もう 1 つお見せしなければならないことがあります。それが可能かどうかはわかりません。最後にCount2列の合計と最後にCount1列の合計のように、各列の合計も最後に表示したいと思います。

したがって、出力でこのように表示する必要があります。最初の部分の作業クエリがありますが、2 番目の部分の作業方法がわかりません。

ID              Count2   Count1
-----------------------------------
1345653         5        4
534140349       5        0
682527813       4        0
687612723       3        0
704318001       5        4
               22        8

これはSQLで可能ですか?はいの場合、どうすればそれを達成できますか?

カウントのみが機能するSQLフィドルを作成しました(最初の部分を意味します)。そのSQLクエリに各列機能の合計を追加する方法がわかりません。

4

3 に答える 3

1

それはあなたのために働くでしょうか?

select id2,  SUM(count2),SUM(coalesce(count1, 0)) as count1 
from table2 
 left outer join table1 
  on id1=id2
 group by id2
 with rollup

これは mysql の構文ですが、ほとんどの RDMSROLLUPは構文のわずかな違いでサポートされています

于 2012-07-26T03:25:56.003 に答える
0

標準SQLでは:

Select id, Count2,Count1, Count2+Count1 as CountSum
from table2 
left outer join table1 on table1.id=table2.id
于 2012-07-26T03:25:02.350 に答える
0

「ロールアップ付き」のグループ化を探しています。次のクエリは、あなたが望むものを提供するはずです。SQL Server を使用していると仮定して...

SELECT
    ISNULL(Table1.ID1, Table2.ID2) AS ID,
    SUM(ISNULL(Table2.Count2, 0)) AS Count2,
    SUM(ISNULL(Table1.Count1, 0)) AS Count1
FROM Table1
FULL JOIN Table2 ON Table2.ID2 = Table1.ID1
GROUP BY
    ISNULL(Table1.ID1, Table2.ID2) WITH ROLLUP
于 2012-07-26T03:26:01.307 に答える