【问题标题】:SQL Select Entire Row by Distinct ColumnsSQL 按不同列选择整行
【发布时间】:2009-09-22 22:37:47
【问题描述】:

我需要一个 sql 语句,它允许我从 oracle 数据库中选择一整行,但按不同的列。这是一个简化的数据库:

    Project_Num    Title        Category
    0              Project 1    Admin
    0              Project 1    Development
    1              Project 2    Admin
    2              Project 3    Development

我需要我的语句返回以下结果集:

0     Project 1    Admin
1     Project 2    Admin
2     Project 3    Development

所以每个项目都是根据其 project_num 和 title 是否唯一来返回的。如果一个项目有 2 个以上类别不同的​​条目,我只需要选择一次该项目(我为该项目选择哪个条目并不重要)。

谁能帮帮我?

【问题讨论】:

    标签: sql oracle select unique


    【解决方案1】:
    SELECT Project_Num, Title, MIN(Category) AS Category
    FROM MyTable
    GROUP BY Project_Num, Title;
    

    【讨论】:

      【解决方案2】:

      您甚至需要在结果集中包含 Category 列吗?

      如果没有,那么你可以使用:

      SELECT DISTINCT Project_Num, Title
      FROM MyTable
      

      【讨论】:

        【解决方案3】:
        SELECT *
        FROM (SELECT DISTINCT YourDistinctField FROM YourTable) AS A
        CROSS APPLY 
        ( SELECT TOP 1 * FROM YourTable B 
          WHERE B.YourDistinctField = A.YourDistinctField ) AS NewTableName
        

        我已经尝试了几个小时来解决这个问题,我尝试了很多不起作用的解决方案,最后通过搜索“加入前 1”并将我找到的解决方案调整为一个不同的搜索得到了它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-13
          • 2021-11-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多