1

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

任何人都可以帮助我吗?

4

3 回答 3

6
SELECT Project_Num, Title, MIN(Category) AS Category
FROM MyTable
GROUP BY Project_Num, Title;
于 2009-09-22T22:47:26.470 回答
2

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

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

SELECT DISTINCT Project_Num, Title
FROM MyTable
于 2009-09-22T22:54:45.893 回答
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”并将我找到的解决方案调整到不同的搜索来得到它。

于 2011-04-25T22:54:16.900 回答