2013-04-14 5 views
-3
sno Fname Sname 
1 Vandana Pandey 
2 Ritesh Kumar 
3 Kumar Ritesh 
4 Pandey Vandana 
5 Priya Kapoor 

Предположим, у меня есть таблица, в которой эти значения вставлены. Теперь я хочу сгенерировать номер строки. Номер строки должен быть одинаковым для того же имени и вывод должен быть: -Квест о генерации номера строки

sno Fname Sname RowNumber 
1 Vandana Pandey 1 
2 Ritesh Kumar 2 
3 Kumar Ritesh 2 
4 Pandey Vandana 1 
5 Priya Kapoor 3 

Как имя Вандана Pandey такое же в SNO-1 & 4.

Plz помочь мне.

+8

Прошу вас. Изменить название. – shark555

+0

sql server 2008 –

ответ

1
USE tempdb; 
    GO 
    IF OBJECT_ID('dbo.name','U') IS NOT NULL DROP TABLE dbo.name; 
    CREATE TABLE dbo.name 
    (
    sno INT NOT NULL PRIMARY KEY 
    ,fname VARCHAR(50) 
    ,lname VARCHAR(50) 
    ) 
    INSERT INTO dbo.name(sno,fname,lname) 
    VALUES 
    (1,'Vandana','Pandey') 
    ,(2,'Ritesh','Kumar') 
    ,(3,'Kumar','Ritesh') 
    ,(4,'Pandey','Vandana') 
    ,(5,'Priya','Kapoor'); 


    WITH cte_names AS 
    (
    Select n.sno 
      ,n.fname + ' ' + n.lname AS fname_first 
    From dbo.name n 
    UNION ALL 
    Select n.sno 
      ,n.lname + ' ' + n.fname AS lnames_first 
    From dbo.name n 
    ) 

    ,cte_dense_rank AS 
    (
    Select cn.sno 
      ,cn.fname_first 
      ,DENSE_RANK() OVER(ORDER BY cn.sno) AS [Row_Number] 
    From cte_names cn 
    ) 

    , cte_row_num AS 
    (
    Select  n.sno,rn.[Row_Number] 
    From  dbo.name n 
    Inner Join cte_dense_rank AS rn 
     ON  n.fname + ' ' + n.lname = rn.fname_first 
    ) 

    Select  n.sno,n.fname,n.lname 
       ,DENSE_RANK() OVER(ORDER BY MIN(mr.[Row_Number])) AS [Row_Number] 
    From  dbo.name n 
    Inner Join cte_row_num mr 
     ON  n.sno = mr.sno 
    Group By n.sno,n.fname,n.lname 
    Order BY n.sno 
+0

Это не дает вам точно, что вы хотите, поскольку вы показываете, что первое имя может быть в последнем поле и vica versa ... –

+0

Я изменил свой первоначальный запрос в соответствии с вашими требованиями. Вышеприведенный код должен делать трюк. –

+0

Thnx Я пытаюсь это .. –

Смежные вопросы