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

从 table1 中,value1 或 value2 应始终为空。现在的问题是如果 value1 或 value2 列为空,那么输出显示为空,因为所有视图都是带有 id、value1、value2 的内连接

我想使用条件进行内部连接,如果 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

试试这个解决方案:

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

你试过coalesce(value1, value2)吗?

于 2012-10-24T08:49:29.223 回答
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 回答