SQL Выбрать всю строку по отдельным столбцам - PullRequest
1 голос
/ 23 сентября 2009

Мне нужен оператор 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 ]

6 голосов
/ 23 сентября 2009
SELECT Project_Num, Title, MIN(Category) AS Category
FROM MyTable
GROUP BY Project_Num, Title;
2 голосов
/ 26 апреля 2011
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» и адаптировав это решение, которое я нашел, к отдельному поиску.

2 голосов
/ 23 сентября 2009

Вам даже нужно иметь столбец категории в вашем наборе результатов?

Если нет, то вы можете просто использовать:

SELECT DISTINCT Project_Num, Title
FROM MyTable
...