[英]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.