SQL比较同一个表中的两列并在另一个表中更新

时间:2016-04-01 13:55:21

标签: sql sybase

表:1

Col1    Col2    Updated Dated   
100     200     01-01-99    
200     300     02-01-99    
300     400     03-01-99    
400     500     04-01-99    
700     900     

表2:

Col New Updated Data
100 500
700 900
1000    No Values
2000    No Values

从表1中我想比较col1和col2逐行或简单查询找到的值如100分为200但200分为300等等。最后400分为500.我想要将500 fianlly追溯然后再进入有点Zig zag comparsion。怎么做SQL。

1 个答案:

答案 0 :(得分:0)

根据我的理解,你有链接列表和每个链接列表之类的内容,你想获得最小和最大ID。

如果您使用的是SQL Server,这应该可以立即使用,否则我认为您可以将相同的方法应用于其他rdbms。

表声明和测试值插入:

CREATE TABLE #t 
(
    Col1 int,
    Col2 int 
)

INSERT INTO #t VALUES (100, 200), (200, 300 ), (300, 400), (400, 500), (700, 900)

实际代码:

SELECT MIN(Col1) AS Col, MAX(Col2) AS New FROM 
(
    SELECT SUM(SeqIDStart) OVER (ORDER BY Col1 ASC) AS SeqID, * 
    FROM (
        SELECT
            CASE WHEN LAG(B.Col1, 0, NULL) OVER (ORDER BY a.Col1 ASC) IS NULL THEN 1 ELSE 0 END AS SeqIDStart,
            a.col1 AS Col1, a.Col2 AS Col2, B.Col1 AS adjsCol
        FROM
            #t a
        LEFT JOIN
            #t b
        ON a.col1 = b.col2
        WHERE a.Col1 IS NOT NULL
    ) a
) b
GROUP BY SeqID

我希望这会有所帮助