sql - 如何显示带有条件的2个表中的值

标签 sql sql-server sql-server-2000

使用 SQL Server 2000

表1

ID date value

001 23/01/2012 100
002 25/02/2012 200
....

表2

Id date value

001 01/01/2012 200
001 02/01/2012 100
...
001 23/02/2012 200
...
001 31/03/2012 100
002 ....
.....

我想选择table2的值,如果id和日期与table1匹配,那么值将从table1显示

ID 日期值

001 01/01/2012 200
001 02/01/2012 100
...
001 23/02/2012 100 'matching id and date from table1
...
001 31/03/2012 100
002 ....
.....

如何做到这一点。

需要查询帮助

预期输出

最佳答案

SELECT DISTINCT Table2.ID, Table2.date,
            CASE
                WHEN Table1.ID = Table2.ID
                     AND Table1.date = Table2.date THEN Table1.value
                ELSE Table2.value
            END
FROM Table1, Table2

编辑

SELECT n_t.n_ID,
       n_t.n_date,
       n_t.n_value
FROM
  (SELECT Table2.ID AS n_ID,
          Table2.date AS n_date,
          CASE
              WHEN Table1.ID = Table2.ID THEN CASE
                                                  WHEN Table1.date = Table2.date THEN Table1.value
                                                  ELSE Table2.value
                                              END
          END AS n_value
   FROM Table1,
        Table2) AS n_t
WHERE n_t.n_value IS NOT NULL

关于sql - 如何显示带有条件的2个表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10829739/

相关文章:

mysql - 获取对话的第一条消息

c# - 将 linq to sql 转换为批量插入的存储过程

sql-server - SSIS 错误 : 0xC002F21 0"Query is too complex.". 可能的失败原因 : Problems with the query, "ResultSet"属性设置不正确

sql-server - 我可以在 SQL Server 中强制用户进行某些设置吗?

MySQL别名和表名

php - 在sql数据库中存储html代码问题

php - 自动增量与唯一键的区别当你把它们都放在一张表中时?

sql-server - 数百个数据库 SQL Server 日志传送

c# - 可空类型是否适合我的情况?

.net - VB.NET 如何从 SQL 查询的文本中获取结果