6

我有一个 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...

性能在这里并不重要,因为我只需要偶尔执行一次,而且数据库并不大(只有几千行)。

4

4 回答 4

7

交叉表查询应该适合。

TRANSFORM First([Text]) AS LangText
SELECT ID, First([Text])
FROM Table 
GROUP BY ID
PIVOT lang

更多信息:http ://allenbrowne.com/ser-67.html

于 2009-04-10T00:26:09.007 回答
2

你需要一个自加入:

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'
于 2009-04-10T00:25:52.877 回答
0
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
于 2010-08-09T21:08:59.037 回答
0
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”是它们所在的任何表格。

于 2009-04-10T00:26:23.500 回答