Я пытаюсь преобразовать некоторые значения строк в столбец, ниже - то, что я пытаюсь достичь.
Моя текущая схема:
+------+----------+
| ID | name |
+------+----------+
| 01 | Vsp lan |
| 0121 | abn |
| 0122 | abb |
| 0123 | vsp |
| 02 | Apn lan |
| 0211 | add |
| 0221 | acd |
+------+----------+
Это то, что я пытаюсь достичь:
+-----+--------+-------+---------+
| kod | ID | name | lan |
+-----+--------+-------+---------+
| 01 | 0121 | abn | vsp lan |
| 01 | 0122 | abb | vsp lan |
| 01 | 0123 | vsp | vsp lan |
| 02 | 0211 | add | Apn lan |
| 02 | 0221 | acd | Apn lan |
+-----+--------+-------+---------+
, но он пропускает строки, когда name и lan имеют одинаковые значения, в этом случае он пропускает строку со значением имени vsp.
DECLARE @table TABLE (ID VARCHAR(5),[name] VARCHAR(10));
INSERT INTO @table
VALUES
('01','Vsp Ian')
,('0121','abn')
,('0122','abb')
,('0123','vsp')
,('02','Apn Ian')
,('0211','add')
,('0221','acd')
;
SELECT a.id as kod, b.id as ID, B.name as name, a.name as lan
FROM @table a
inner join @table b on CHARINDEX(a.id,b.id) = 1 and CHARINDEX(b.name,a.name) = 0