繁体   English   中英

SQL连接序列号

[英]SQL Join on sequence number

我有2张桌子(A,B)。 它们每个都有一个不同的列,该列基本上是订单或序列号。 表A具有“序列”,值的范围是0到5。表B具有“索引”,值是16740、16744、16759、16828、16838和16990。不幸的是,我不知道这些值的重要性。 但我确实相信它们将始终按顺序匹配。 我想将这些表加入这些数字,其中0 = 16740、1 = 16744,等等。有什么想法吗?

谢谢

您可以使用case表达式将表a的值转换为表b的值(反之亦然),然后加入该表达式:

SELECT *
FROM   a
JOIN   b ON a.[sequence] = CASE b.[index] WHEN 16740 THEN 0 
                                          WHEN 16744 THEN 1
                                          WHEN 16759 THEN 2
                                          WHEN 16828 THEN 3
                                          WHEN 16838 THEN 4
                                          WHEN 16990 THEN 5
                                          ELSE NULL
                            END;

@Mureinik有一个很好的例子。 如果最终您确实要增加更多的数字,则可以将此信息放入新表中是个好主意。

CREATE TABLE C(
AInfo    INT,
BInfo    INT
)
INSERT INTO TABLE C(AInfo,BInfo) VALUES(0,16740)
INSERT INTO TABLE C(AInfo,BInfo) VALUES(1,16744)
etc

然后,您可以联接所有表。

如果按照您的示例,这些值按升序排列,则可以使用ROW_NUMBER()函数来实现此目的:

;with cte AS (SELECT *, ROW_NUMBER() OVER(ORDER BY [Index])-1 RN
              FROM B)
SELECT *
FROM cte

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM