sql - Oracle SQL 从某些列中取出重复的结果
问题描述
我的数据在不同的表中有类别和子类别。当我编写查询以加入它们时,我得到下表,其中类别行重复:
| Col1 | Col2 | Col3 | Col 4 |
|-------|-----------|------------|-------|
| Cat1 | Cat1 Data | Subcat 1.1 | Etc |
|-------|-----------|------------|-------|
| Cat1 | Cat1 Data | Subcat 1.2 | Etc |
|-------|-----------|------------|-------|
| Cat1 | Cat1 Data | Subcat 1.3 | Etc |
|-------|-----------|------------|-------|
| Cat2 | Cat2 Data | Subcat 2.1 | Etc |
|-------|-----------|------------|-------|
| Cat2 | Cat2 Data | Subcat 2.2 | Etc |
|-------|-----------|------------|-------|
| Cat2 | Cat2 Data | Subcat 2.3 | Etc |
|-------|-----------|------------|-------|
有什么办法可以打印出来,主要类别只显示一次?
| Col1 | Col2 | Col3 | Col 4 |
|-------|-----------|------------|-------|
| Cat1 | Cat1 Data | Subcat 1.1 | Etc |
|-------|-----------|------------|-------|
| | | Subcat 1.2 | Etc |
|-------|-----------|------------|-------|
| | | Subcat 1.3 | Etc |
|-------|-----------|------------|-------|
| Cat2 | Cat2 Data | Subcat 2.1 | Etc |
|-------|-----------|------------|-------|
| | | Subcat 2.2 | Etc |
|-------|-----------|------------|-------|
| | | Subcat 2.3 | Etc |
|-------|-----------|------------|-------|
在线搜索仅返回对使用 distinct 或 groupby 的引用,这些引用似乎并不真正适合用例。我知道这里的答案通常是“使用前端工具”,但在我的情况下这并不是真正的选择。
解决方案
你最好重复一遍。但是,您可以使用row_number()
:
select (case when row_number() over (partition by col1, col2 order by ?) = 1
then col1
end) as col1
(case when row_number() over (partition by col1, col2 order by ?) = 1
then col2
end) as col2,
. . .
from t
order by col1, col2, ?;
请注意,这?
是指定排序的列 - 定义每一行的“第一”。
order by
在外部查询中包含 是非常重要的。SQL 结果集(如表)是无序的。如果没有order by
,可以按任何顺序返回行,但在这种情况下排序很重要。
推荐阅读
- go - 如何定义通用原型消息
- python - Python:我的 if 语句不起作用但我没有收到任何错误?
- angular-cli - Angular 9 测试错误:async() 测试助手需要区域,但找不到
- javascript - 在 d3.js 中使用 translate() 将工具提示定位在表格单元格上
- javascript - Vue FullPage.js 更改方法上的选项
- java - 通过使用邮递员作为客户端,无法在 Spring Boot 中读取大量数据的 CSV 文件
- excel - 用户表单中长变量和列表框之间的类型不匹配
- google-apps-script - 请求 Apps 脚本 ConferenceDataService 访问权限
- python - 通过 Pandas 中的 Web url 加载每天都在更新的数据集(如 COVID-19 数据)
- python-3.x - 带有 wiki 文章的 GPT2 输入大小