Ich habe zwei Tabellen, Tabelle 1 und Tabelle 2. Tabelle 1 hat die Spalten "Start" und "Ende". Tabelle 2 enthält die Spalten "Position" und "Sequenz". Ich möchte die Sequenzen aus Tabelle 2 von position = start bis position = end extrahieren und eine neue Spalte mit der verketteten Zeichenfolge erstellen.
Tabelle 1
Start | Ende |
---|---|
100 | 104 |
105 | 109 |
Tabelle 2
Position | Seq |
---|---|
100 | EIN |
101 | T. |
102 | C. |
103 | T. |
104 | G |
105 | T. |
106 | T. |
107 | G |
108 | T. |
109 | G |
Mein Endergebnis muss sein
Start | Ende | Reihenfolge |
---|---|---|
100 | 104 | ATCTG |
105 | 109 | TTGTG |
Ich habe versucht, die Werte in Tabelle 2 mit der folgenden Anweisung zu verketten
SELECT Sequence = (Select '' + Seq
from Table2
where Position >= 100 and Position <= 104
order by Position FOR XML PATH(''))
Ich bin mir jedoch nicht sicher, wie ich dies in der gesamten Tabelle durchführen soll. Vielen Dank für all die Hilfe
Sie geben nicht an, welches DBMS Sie verwenden. Hier ist eine SQL Server-Lösung, die CTE und FOR XML verwendet, um die Transponierung durchzuführen:
; WITH SequenceCTE AS
(
SELECT [Start],
[End],
Seq
FROM Table1 a
JOIN Table2 b
ON b.Position >= a.[Start] AND
b.Position <= a.[End]
)
SELECT DISTINCT
a.[Start],
a.[End],
(
SELECT STUFF(',' + Seq,1,1,'')
FROM SequenceCTE b
WHERE a.[Start] = b.[Start] AND
a.[End] = b.[end]
FOR XML PATH ('')
)
FROM SequenceCTE a
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen