0

我正在使用 Sybase SQL。

我有两张桌子。

表 A:

Column1_A:
100
501
504
810
810
950
955
955

表 B:

Column1_B:
100
250
503
810
807
949
950
955
955

我想实现以下目标:

Column1_A    Column1_B
100          NULL   
501          250
504          503
810          503
810          503
950          949
955          950
955          950

所以,基本上我想将表 B 中的 Column1_B 与表 A 中的 Column1_A 对齐,以便每行的 Column1_B 的最大值小于 Column1_A。如果表 B 中没有这样的元素,它应该给出 NULL

Column1_A 或 Column1_B 中的值仅用于说明。实际值如 1000、1500、2504,它们不一定是 Column1_B 中的值是 Column1_A - 1。

编辑:

我修改了数据,以便可以概括逻辑。我正在使用 Sybase SQL。

4

1 回答 1

2

对不起,但我不清楚你想获得什么。但是您提供的最终结果可以通过以下方式获得:

SELECT Column1_A, Column1_B FROM A 
LEFT JOIN B ON Column1_A = Column1_B -1

编辑。您可以尝试相关的子查询:

SELECT Column1_A a, (SELECT MAX(Column1_B) FROM B where Column1_B < a) FROM A

于 2013-04-29T18:42:56.757 回答