0

SQL Server 2000

20を超えるビューを使用すると、すべてのビューがtable1(idとvalue1とvalue2)と内部結合されます。

表1

ID Value1 Value2

001 100 null
001 200 null
001 300 null
001 400 null
001 200 null

また

ID Value1 Value2

001 null 100 
001 null 200 
001 null 300 
001 null 400 
001 null 200 

表2

ID value1 value2

....
....

some data's

表1から、value1またはvalue2のいずれかが常にnullである必要があります。ここで問題となるのは、value1またはvalue2列がnullの場合、すべてのビューがid、value1、value2との内部結合であるため、出力がnullを示していることです。

条件付きの内部結合を作成したいのですが、value1がnullでない場合は、value1との内部結合、またはvalue2がnullでない場合は、value2との内部結合を作成します。

このようなクエリ

Select * from table2 inner join with table1 on tabel2.id = table1.id and if table1.value1 is null then table2.value2 = table1.value2 or
else table2.value1 = table1= value1 end if

上記の条件を照会する方法

SQLクエリのヘルプが必要

4

4 に答える 4

1

次のような作品はありますか?

SELECT * FROM table2
INNER JOIN WITH table1 ON table2.id = table1.id
    AND (table1.value1 = table2.value1 OR table1.value1 IS NULL)
    AND (table1.value2 = table2.value2 OR table1.value2 IS NULL)

ただし、大きなデータセットがある場合、これはかなり遅いことがわかると思います...

于 2012-10-24T08:52:16.960 に答える
0

試しましたcoalesce(value1, value2)か?

于 2012-10-24T08:49:29.223 に答える
0

このソリューションを試してください:

Select * 
from table2 
inner join table1 on (tabel2.id = table1.id 
                      and table1.value1 is null 
                      and table2.value2 = table1.value2) 
                  or ( table2.value1 = table1.value1 )
于 2012-10-24T09:20:23.743 に答える
0
SELECT * FROM table2 t2
INNER JOIN WITH table1 t1 ON table2.id = table1.id
On (CASE WHEN t1.value1 is null then t1.value2=t2.value2 else t1.value1=t2.value1)
and
(CASE WHEN t2.value1 is null then t2.value2=t1.value2 else t2.value1=t1.value1)
于 2012-10-24T09:21:59.730 に答える