Вы, кажется, хотите выглядеть рекурсивно в таблице для Column2
значений, содержащихся в предыдущем Column1
значения. Вы можете сделать это, используя общее табличное выражение;
WITH cte(Column1, Column2) AS (
SELECT Column1, Column2 FROM test t WHERE Column2='Data3'
UNION ALL
SELECT t.Column1, t.Column2 FROM test t
JOIN cte
ON CHARINDEX(t.column2, cte.Column1) > 0
)
SELECT * FROM cte;
>>>
Column1 Column2
Data2_005 Data3
Data1_001 Data2
GML1 Data1
Первый выбор находит базовый случай (строку с Column2
равным Data3
).
Второй выбор соединяется с самим cte
, который в этом случае содержит предыдущую строку, чтобы вы могли сопоставить предыдущее значение Column1
, чтобы найти следующую строку.
Остерегайтесь петель (например, строку с Data3_001
+ Data3
потерпит неудачу запрос)
Просьба пояснить должным образом. вопрос до сих пор не ясен –
@vivek nuna. Я хочу, каковы отношения avilable по данным на основе столбца2. –