sql - 试图将表格的最近行连接到另一个表格

标签 sql join firebird

我有 2 个表,我想将表 b 的最高但未超过修订的行加入表 a

表一:

REVISION_NO     INFO1
1               a
2               b
3               c
4               d
5               e
6               f

表b:

REVISION_NO     INFO2
1               x
4               y
6               z

我要:

a               x
b               x
c               x
d               y
e               y
f               z

一些加盟专家知道如何做到这一点?如果重要,数据库是 Firebird

最佳答案

这是适用于 SQL Server 2008 的有效解决方案。

BEGIN
DECLARE @a TABLE(REVISION_NO INT, INFO1 CHAR(1))
DECLARE @b TABLE(REVISION_NO INT, INFO2 CHAR(1))
INSERT INTO @a VALUES
(1, 'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e'),(6,'e')
INSERT INTO @b VALUES
(1,'x'),(4,'y'),(6,'z')
--
SELECT a.INFO1
, ISNULL(b.INFO2, (
    SELECT INFO2 FROM @b WHERE REVISION_NO = (
        SELECT MAX(REVISION_NO) 
        FROM @b 
        WHERE REVISION_NO < a.REVISION_NO
))) [INFO2]
FROM @a a
LEFT JOIN @b b 
    ON b.REVISION_NO = a.REVISION_NO
END

不知道 firebird 是否会允许这样的下一个查询

关于sql - 试图将表格的最近行连接到另一个表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713600/

相关文章:

c# - 出版物(网络): Object reference not set to an instance of an object when trying to publish a web site

php - 以查询形式回显数组值

mysql - SQL根据第一个表中的时间差连接第二个表

MySql Join - 如何获取相关行以外的所有行?如何在连接表中求和?

indexing - 当定位的值接近表中的最大值时,降序索引对 SELECT..WHERE 是否有利?

mysql - 数据库表设计

mysql - SQL - 在我的站点上包含大量 OR 运算符(例如 1000 个或更多)来构建关注系统是否是一种好的做法?

python - 为什么我不能分配给 Pandas DataFrame 的一部分?

sql - 使用多个表中的值更新语句

javax.servlet.ServletException : Error creating bean - Invocation of init method failed; nested exception is javax. 持久性.PersistenceException