SQL按不同列选择整行

时间:2009-09-22 22:37:48

标签: sql oracle select unique

我需要一个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个以上的类别不同的​​条目,我只需要选择一次该项目(我为该项目选择的条目无关紧要。)

有人可以帮我吗?

3 个答案:

答案 0 :(得分:6)

SELECT Project_Num, Title, MIN(Category) AS Category
FROM MyTable
GROUP BY Project_Num, Title;

答案 1 :(得分:2)

您是否需要在结果集中包含“类别”列?

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

SELECT DISTINCT Project_Num, Title
FROM MyTable

答案 2 :(得分:2)

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”并调整我找到的独特搜索解决方案来获得它。