0

これらの2つのテーブルAとBがあります

A:

id|name
1 | AAA
2 | BBB
3 | CCC

B:

id|a_ref_id|name2
1 |1       |aaa
2 |1       |aAa
3 |2       |bbb
4 |3       |ccc
5 |3       |cCc

このテーブルは を介し​​て結合できますa_ref_id

次のような出力が必要です。

A_id|A_name|B_id|B_name2|A_id_occurencse_in_this_query
1   |AAA   |1   |aaa    |1
1   |AAA   |2   |aAa    |2
2   |BBB   |3   |bbb    |1
3   |CCC   |4   |ccc    |1
3   |CCC   |5   |cCc    |2

最後の列は私の問題です。

結合は簡単ですが、最後の列を取得する方法がわかりません。COUNTGROUP BY、などで試しましHAVINGたが、うまくいきませんでした。

何か案は?

4

2 に答える 2

1

MS-SQL の場合は、ROW_NUMBER()と を使用できますPARTITION

SELECT
  a.ID as A_ID,
  a.Name as A_Name,
  B.ID as B_ID,
  B.NAME2 as B_Name2,
  ROW_NUMBER() OVER(PARTITION By A.ID ORDER BY A.ID, B.ID) as A_id_occurencse_in_this_query
FROM A
JOIN B
  ON a.ID = b.a_ref_id
于 2013-01-21T15:53:06.737 に答える
0
select *
from 
(select a.id , min(a_ref_id) as a_ref_id, min(name2) as name , count(1) as A_id_occurencse
from B a join B b on a.id < b.id 
group by a.id) t join A a on t.a_ref_id = a.id 
于 2013-01-21T15:42:35.323 に答える