首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无重复的源目的表

无重复的源目的表
EN

Stack Overflow用户
提问于 2020-06-19 22:48:54
回答 2查看 20关注 0票数 0

我正在尝试使用下表创建一个新的数据表:

代码语言:javascript
运行
复制
ID City        Language
1  Paris       French 
2  New York    English
3  Delhi       English
4  Berlin      German
5  Marseille   French
6  Hamburg     German

输出应该是这样的:

代码语言:javascript
运行
复制
City 1 City2       Language
Paris  Marseille   French
NY     Delhi       English
Berlin Hamburg     German

这里的主要思想是避免具有相同城市的2行,例如巴黎-马赛和马赛-巴黎。请给出如何实现它的建议。

EN

回答 2

Stack Overflow用户

发布于 2020-06-19 22:51:05

你只是想要聚合吗?

代码语言:javascript
运行
复制
select min(city), max(city), language
from t
group by language;
票数 0
EN

Stack Overflow用户

发布于 2020-06-19 22:51:08

如果每种语言只有两行,那么简单的聚合就足够了:

代码语言:javascript
运行
复制
select min(city) city1, max(city) city2, language
from mytable
group by language

如果您希望处理更多城市,和/或根据初始行的id控制它们在列中的显示顺序,则可以使用窗口函数和条件聚合:

代码语言:javascript
运行
复制
select
    max(case when rn = 1 then city end) city1,
    max(case when rn = 2 then city end) city2,
    max(case when rn = 3 then city end) city3
from (
    select t.*, row_number() over(partition by language order by id) rn
    from mytable t
) t
group by language
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62472795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档