1

SQL Server 2008 を使用して、列 c1 でテーブル 1 とテーブル 2 の間の左結合を実行しようとしています。

アイデアは、左側のテーブル (TABLE 1) からすべての行を取得するというものです。右のもの (表 2) から、1 つの値しか得られません。

Table 1    
--------------------
document          varchar(30)

Table 2    
--------------------
idTable2          int(30)
document          varchar(30)

Sample data TABLE 1
--------------------
3846922
2000762
3064627

Sample data TABLE 2
--------------------
1            3846922
2            2000762
3            3064627
4            2000762
5            3846922 

Sample Result
--------------------
3846922     1
2000762     2
3064627     3

この投稿をガイドとして使用しましたが、望ましい結果を得ることができませんでした。今まで、左のテーブルと右のテーブルの多くの値を取得しました。何か案は?以下は私のSQLクエリです:

SELECT t1.document, t2.idTable2
FROM Table1 t1
LEFT JOIN Table2 t2
ON t1.document = 
(
   SELECT TOP 1 t2_aux.document
   FROM Table2 t2_aux
   WHERE t2_aux.document = t1.document
   ORDER BY t2_aux.document DESC
)
4

1 に答える 1

1
DECLARE  @t1 TABLE(document varchar(30))

INSERT INTO @t1
VALUES('3846922'),('2000762'),('3064627')

DECLARE  @t2 TABLE(idTable2 int,document varchar(30))
INSERT INTO @t2
VALUES(1,'3846922'),
(2,'2000762'),
(3,'3064627'),
(4,'2000762'),
(5,'3846922 ')

select t1.document,min(t2.idTable2) as idTable2  from @t1 t1 inner join @t2 t2
on t1.document = t2.document 
group by t1.document
order by idTable2
于 2012-08-06T14:29:33.893 に答える