-1

私のクエリでは、次の条件があります

left Join Table2 on Table2.Id = Table1.Id and Table2.status in  ('Close', 'Open')

そして、上記の条件では、左結合のために2つの余分な行があります。条件でCloseまたはOpenのいずれかしかない場合、正しい行数が返されることに気付きました。

これを修正するために、私はこのようなものを書き込もうとしていました

And  Table2.status = (Case Table2.status
                WHEN 'Open' Then 'Open'
                When 'Close' Then 'Close'   
                 End ) 

ただし、これでも2行余分に返されます。これを修正する方法について何か提案はありますか?

4

2 に答える 2

1

あなたはこのようなことをすることができます:

select *
from table1
    left join 
    (
         select id from table2 
         where status in ('open', 'close')
         group by id

    ) as table2
        on table1.id = table2.id

これはかなりハッキーなようですが、現時点ではもっと良いものを思い付くことができないようです。それ以外の場合は、DISTINCT

select DISTINCT table1.*, table2.stuff
FROM Table1
    LEFT JOIN Table2
        on Table2.Id = Table1.Id and Table2.status in  ('Close', 'Open')
于 2012-07-09T17:08:38.137 に答える
0

重要なのはDISTINCTステートメントです。

SELECT DISTINCT Table1.* FROM Table1 
     LEFT JOIN Table2 ON Table2.Id = Table1.Id 
                      AND Table2.status in  ('Close', 'Open')
于 2012-07-09T17:12:28.133 に答える