比较同一个表中的两列并在另一个表中更新的SQL
表:1比较同一个表中的两列并在另一个表中更新的SQL,sql,sybase,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 从
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 assinged到200,但像200 assinged 300这样的值。。最后400人被分成500人。我想先把500分重新计算,然后再分成100分。这是一种之字形的比较。如何使用SQL。据我所知,您有类似于链表的东西,对于每个链表,您都希望获得最小和最大id 如果您使用的是SQL Server,那么应该可以立即使用,否则我认为您可以将相同的方法应用于其他rdbms 表声明和测试值插入:
CREATE TABLE #t
(
Col1 int,
Col2 int
)
插入t值(100200)、(200300)、(300400)、(400500)、(700900)
实际代码是:
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
我希望这将有助于您正在使用什么?您正在使用哪种SQL产品?MySQL、Oracle、SQL Server?这将对如何解决这一问题产生重大影响。请阅读: