我有一张国家和不同语言的翻译表,这样的话(可能有些数据可能有误,但只是样本值):
addView()
我需要得到的是一个显示一列语言的矩阵,类似于:
lanId, countryId, name, translation
1, 1, Spain, Spain
1, 2, France, France
1, 3, Italy, Italy
2, 1, Spain, España
2, 2, France, Francia
2, 3, Italy, Italia
3, 1, Spain, Espagne
3, 2, France, France
3, 3, Italy, Italie
我尝试过使用CASE句子:
countryId, countryName, es, fr,
1, spain, españa, espagne
2, france, francia, france
3, italy, italia, italie
但是我在每一列中都得到了很多NULL,如下所示:
SELECT countryId,
case WHEN idLan =1 THEN translation end as en,
case WHEN idLan =2 THEN translation END as es,
case WHEN idLan =3 THEN translation END as fr,
FROM translations
我怎么能得到这样的矩阵,但是避免使用空值?
countryId, en, es, fr
1, spain, NULL, NULL
2, france, NULL, NULL
3, Italy, NULL, NULL
1, NULL, españa, NULL
2, NULL, francia, NULL
3, NULL, italia, NULL...
坦克。
答案 0 :(得分:1)
您需要按countryId分组:
SELECT countryId,
case WHEN lanId = 1 THEN translation END as en,
case WHEN lanId = 2 THEN translation END as es,
case WHEN lanId = 3 THEN translation END as fr
FROM translations
GROUP BY countryId
答案 1 :(得分:1)
尝试以下数据透视查询:
SELECT
countryId,
name,
MAX(CASE WHEN lanId = 1 THEN translation END) AS en,
MAX(CASE WHEN lanId = 2 THEN translation END) AS es,
MAX(CASE WHEN lanId = 3 THEN translation END) AS fr
FROM translations
GROUP BY
countryId,
name
<强>输出:强>
在这里演示: