SQL لنقل أزواج الصفوف إلى الأعمدة في قاعدة بيانات MS ACCESS
سؤال
لدي قاعدة بيانات MS Access تحتوي على جمل مترجمة في أزواج المصدر والهدف (ذاكرة ترجمة لزملائي مستخدمي أدوات CAT).ومن المزعج إلى حد ما، أن المصدر والهدف لا يتم تخزينهما في أعمدة منفصلة، ولكن في صفوف مرتبطة بالمعرف، مثل هذا:
+---+----+--------------+
|id |lang| text |
+---+----+--------------+
1 a lang a text
1 b lang b text
2 a more a text...
2 b more b text...
+---+----+--------------+
ما SQL الذي يمكنني استخدامه لتحويل ذلك إلى جدول مثل:
+---+--------------+--------------+
|id | lang A | lang B |
+---+--------------+--------------+
1 lang a text lang b text
2 more a text... more b text...
الأداء لا يهم هنا، لأنني سأحتاج فقط إلى القيام بذلك مرة واحدة كل فترة، وقاعدة البيانات ليست ضخمة (فقط بضعة آلاف من الصفوف).
المحلول
يجب أن يناسب الاستعلام الجدولي.
TRANSFORM First([Text]) AS LangText
SELECT ID, First([Text])
FROM Table
GROUP BY ID
PIVOT lang
مزيد من المعلومات: http://allenbrowne.com/ser-67.html
نصائح أخرى
أنت بحاجة إلى الانضمام الذاتي:
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';
حيث "الجدول" هو أي جدول موجود فيه.
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
لا تنتمي إلى StackOverflow