#sql #sql-server #sql-server-2005 #sql-server-2008-r2 #sql-server-2012
#sql #sql-сервер #sql-server-2005 #sql-server-2008-r2 #sql-server-2012
Вопрос:
У меня есть таблица, подобная приведенной ниже
UserName | Fee | ReferenceName | Billed
----------------------------------------
John 200 John Yes
Khalid 100 Chintu No
Khalid 100 Naga Yes
Khalid 100 Sudheer Yes
Sathish 200 aaaa No
Sathish 200 bbbb Yes
Suresh 100 cccc Yes
Я хочу вывести, как показано ниже:
UserName | Fee | ReferenceName | Billed
----------------------------------------
John 200 John Yes
Khalid 100 Chintu No
Naga Yes
Sudheer Yes
Sathish 200 aaaa No
bbbb Yes
Suresh 100 cccc Yes
Повторяющиеся имена не будут появляться во второй раз, здесь столбцы «Имя пользователя» и «Плата» являются повторяющимися столбцами..
Комментарии:
1. Вы можете попробовать использовать функцию ранга, а для записей, имеющих ранг> 1, вы можете скрыть поля с помощью оператора case .
Ответ №1:
Пожалуйста, попробуйте:
select
case when RNum=1 then UserName else '' end UserName,
case when RNum=1 then Fee else '' end Fee,
ReferenceName,
Billed
from(
select
*,
ROW_NUMBER() over (partition by UserName order by UserName) RNum
from tbl
)x
Ответ №2:
Может быть, вы можете попробовать это
select
case when RANKK=1 then USERNAME else '' end USERNAME,
case when RANKK=1 then FEE else '' end FEE,
REFERENCENAME,
BILLED
from(
select
A.*,
RANK over (partition by USERNAME,FEE order by USERNAME) AS RANKK
from MY_TABLE A
)x
Комментарии:
1. Спасибо @Nishanthi Grashia.