我有2张桌子(A,B)。它们各自具有不同的列,基本上是订单或序列号。表A具有序列'并且值的范围从0到5.表B具有'索引'值为16740,16744,16759,16828,16838和16990.不幸的是,我不知道这些值的重要性。但我确实相信它们将始终按顺序匹配。我想在这些数字上加入这些数字,其中0 = 16740,1 = 16744等。任何想法?
由于
答案 0 :(得分:2)
您可以使用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;
答案 1 :(得分:2)
@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
然后你可以加入所有表格。
答案 2 :(得分:0)
如果值按照您的示例按升序排列,则可以使用ROW_NUMBER()
函数来实现此目的:
;with cte AS (SELECT *, ROW_NUMBER() OVER(ORDER BY [Index])-1 RN
FROM B)
SELECT *
FROM cte