SQL Zeilenpaare Spalten in MS Access-Datenbank zu transponieren
Frage
Ich habe eine MS Access-Datenbank, die in der Quelle-Ziel-Paaren übersetzten Sätze enthält (ein Translation Memory für mitbenutzen von CAT-Tools). Etwas störend, Quelle und Ziel sind in separaten Spalten nicht gespeichert, sondern wie diese in Reihen von ID verknüpft:
+---+----+--------------+
|id |lang| text |
+---+----+--------------+
1 a lang a text
1 b lang b text
2 a more a text...
2 b more b text...
+---+----+--------------+
Was SQL könnte ich das in eine Tabelle zu machen, wie:
+---+--------------+--------------+
|id | lang A | lang B |
+---+--------------+--------------+
1 lang a text lang b text
2 more a text... more b text...
Performance spielt hier keine Rolle, da würde ich dies nur einmal in einer Weile tun müssen, und der db ist nicht riesig (nur ein paar tausend Zeilen).
Lösung
Eine Kreuztabellen- Abfrage sollte passen.
TRANSFORM First([Text]) AS LangText
SELECT ID, First([Text])
FROM Table
GROUP BY ID
PIVOT lang
Weitere Informationen: http://allenbrowne.com/ser-67.html
Andere Tipps
Sie müssen eine Selbstverknüpfung:
SELECT
t1.id, t1.text AS lang_a, t2.text AS lang_b
FROM
lang_table AS t1
INNER JOIN
lang_table AS t2
ON
(t1.id = t2.id)
WHERE
t1.lang = 'a'
AND
t2.lang = 'b'
select a.id, a.text as 'lang A', b.text as 'lang B'
from table a join table b on (a.id = b.id)
where a.lang = 'a' and b.lang = 'b';
Dabei steht "Tisch" ist, was Tabelle sind diese in.
SELECT a.id,
MAX(CASE WHEN a.lang LIKE 'a' THEN a.text) AS Lang A,
MAX(CASE WHEN a.lang LIKE 'a' THEN a.text) AS Lang A
FROM table a
GROUP BY a.id
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow