[英]SQL to transpose row pairs to columns in MS ACCESS database
我有一个MS Access数据库,其中包含源 - 目标对中的翻译句子(CAT工具的其他用户的翻译记忆库)。 有点烦人的是,源和目标不是存储在单独的列中,而是存储在由ID链接的行中,如下所示:
+---+----+--------------+
|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...
性能在这里并不重要,因为我只需要偶尔执行一次,并且db不是很大(只有几千行)。
交叉表查询应该适合。
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,
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
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';
其中“table”是这些表所在的表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.