Привет у меня есть следующая таблица
P_id Fname Lname 1 vaibhav shukla 2 davalesh barak 2 sumo barath 3 kushal mehra
Теперь мне нужен запрос, который возвращает любую из следующих таблиц
P_id Fname Lname 1 vaibhav shukla 2 davalesh barak 3 kushal mehra
ИЛИ
P_id Fname Lname 1 vaibhav shukla 2 sumo barath 3 kushal mehra
Быстрое решение приветствуется
2 ответа
Похоже, вы хотите получить Distinct в одном столбце.
Надеюсь, вы используете SQL Server 2005 или выше
Select First_Name,Last_Name,P_Id
FROM
(
Select First_Name,Last_Name,P_Id
Row_Number() Over (Partition By P_Id Order By First_Name) As RNum
From Table1) T1
WHERE T1.RNum = 1
Идея состоит в том, чтобы назначить отдельный номер строки внутри PID группы, а затем получить тот, у которого RowNumber = 1.
Для SQL Server 2000
Select Distinct First_Name,Last_Name,P_ID
From Table1 T1
INNER JOIN
(
Select Min(First_Name) First_Name,P_ID
From Table1 T1
Group By P_ID
) T2 ON T1.P_ID = T2.P_ID AND T1.First_Name = T2.First_Name
Примечание. В случае, если две строки имеют одинаковые P_ID и First_Name и разные Last_Name, будут возвращены 2 строки. Я проверяю это.
Другой способ — создать временную таблицу с Identity Column. Затем вместо использования min(First_Name) во внутреннем запросе мы будем использовать группу min(Idenity) по P_ID, а в соединении мы будем использовать P_ID и идентификатор для соединения.
select t1.p_id
, min(t2.lname) lname
, min(t2.fname) fname
from tab t1
inner join tab t2
on t1.p_id = t2.p_id
where t2.Lname = (
select min(lname)
from tab t2
where t2.p_id = t1.p_id
)
group by t1.p_id
Похожие вопросы
Новые вопросы
sql-server
Microsoft SQL Server — это система управления реляционными базами данных (RDBMS). Используйте этот тег для всех выпусков Microsoft SQL Server, включая Compact, Express, Azure, Fast-track, APS (ранее PDW) и Azure SQL DW. Не используйте этот тег для других типов СУБД (MySQL, PostgreSQL, Oracle и т. д.). Не используйте этот тег для вопросов по программному обеспечению и разработке мобильных устройств, если только он не связан напрямую с базой данных.