簡體   English   中英

SQL比較同一表中的兩列,並在另一表中更新

[英]SQL Comparing Two Columns in same table and update in another table

表格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項然后將其分配為100.its。曲折比較。 在SQL中怎么做。

據我了解,您有類似鏈表的內容,並且對於每個鏈表,您都希望獲得最小和最大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

我希望這個能幫上忙

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM