Я бы рекомендовал добавить в IDENTITY
столбец в таблицу, вы можете сделать это, как показано ниже:
ALTER TABLE t
ADD ColID int IDENTITY(1,1)
или путем создания новой таблицы, чтобы обеспечить порядок данные корректны:
CREATE TABLE t (ColID int IDENTITY(1,1), Col1 int, Col2 int, Col3 int)
Чтобы ответить на этот вопрос, мне нужно использовать таблицу со столбцом идентификации, поэтому сначала вставить данные ..
INSERT t (Col2, Col3)
VALUES (1,1234),
(0,1023),
(2,1025),
(3,1032),
(4,1234),
(0,1013),
(1,1325),
(3,1332),
(5,1523),
(4,1234)
Затем, используя выражение общего таблицы cte
вы можете производить результаты для первой колонки что только изменить на новое значение столбца три, если значение в колонке два содержатся в приведенных выше данных, когда заказанный столбец идентификации:
;WITH cte as (
SELECT ColID,
row_number() over (partition by Col2 order by ColID) count2,
col2,
col3
FROM t
)
SELECT t1.ColID, t2.Col3 Col1, t1.Col2, t1.Col3
FROM (
SELECT c1.ColID,
c1.Col2,
c1.Col3,
MAX(c2.ColID) ValColID
FROM cte c1
LEFT JOIN cte c2 ON c2.ColID <= c1.ColID AND (c2.count2 > 1 OR c2.ColID = 1)
GROUP BY c1.ColID,c1.Col2,c1.Col3
) t1
INNER JOIN cte t2 ON t1.ValColID = t2.ColID
логики вы дали, чтобы получить 'col1' значения не делают чувство. Пожалуйста, объясните в еще большем, почему значение в 'col1' составляет' 1234' для первых 5 строк. – Utsav
Но строки в таблице неупорядочены. Вам нужен какой-то последовательный столбец. – jarlh
atleast show output желание. «Мне нужно получить значение col3 для col1, пока в столбце не будет повторено то же число». это не понятно. объясните. – KumarHarsh