2015-09-18 2 views
0

У меня есть таблица Student_Information, с колоннами и данными, такими как:Подсчет дубликата и установив рекорд в вычисляемом столбце в SQL

ID StudentName FatherName NIC No_of_Childrens Date_of_Birth Date_of_Admission 
1 Mark  John  85      2010-04-01 2015-04-19 
2 Akbar  Aslam  89      2009-05-01 2015-04-19 
3 Percul  John  85      2010-04-01 2015-04-19 
4 Ali   Aslam  89      2009-05-01 2015-04-19 
5 Diglor  John  85      2010-04-01 2015-04-19 
6 Sabi  Aslam  89      2009-05-01 2015-04-19 

Я хочу, чтобы подсчитать NIC колонки для дублей и дать номера в no of childs колонки. Как это:

ID StudentName FatherName NIC No_of_Childrens Date_of_Birth Date_of_Admission 
1 Mark  John 85  1    2010-04-01 2015-04-19 
2 Akbar  Aslam 89  1    2009-05-01 2015-04-19 
3 Percul  John 85  2    2010-04-01 2015-04-19 
4 Ali   Aslam 89  2    2009-05-01 2015-04-19 
5 Diglor  John 85  3    2010-04-01 2015-04-19 
6 Sabi  Aslam 89  3    2009-05-01 2015-04-19 

ответ

2

Попробуйте ниже фрагмент кода -

SELECT ID, StudentName, FatherName, NIC,No_of_Childrens,Date_of_Birth, Date_of_Admission 
FROM 
(
SELECT ID, StudentName, FatherName, NIC,Date_of_Birth, Date_of_Admission,No_of_Childrens = RANK() OVER(PARTITION BY NIC ORDER BY ID) 
FROM Student_Information) A ORDER BY ID 
+0

Спасибо вам свою работу как шарм. но я хочу обновить существующую запись. Я хочу вставить значение Number_of_Children в свой столбец, а не только вычислять –

+0

. Один из способов сделать это - хранить данные (извлеченные из запроса выше) в некоторую временную таблицу, а затем присоединить временную таблицу с помощью 'Student_Information' на основе' ID' , запросов - 'SELECT, идентификатор StudentName, Отчество, сетевая карта, Date_of_Birth, Date_of_Admission, No_of_Childrens = RANK() OVER (PARTITION BY NIC ORDER BY ID) НА #temp ОТ Student_Information ORDER BY ID; UPDATE SI SET SI.No_of_Childrens = # temp.No_of_Childrens FROM Student_Information SI INNER JOIN #temp ON SI.ID = # temp.ID' – Abhishek

+0

Большое спасибо. могу ли я давать числа в соответствии с Date_of_Birth. Я имею в виду 1-й чек, тот же NIC, а затем Compare Date_of_Birth, более ранний date_of_birth не дает никого рядом с 2 и т. Д. –

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