mysql - To get only first record from the group of employee -
i have follwing data:
emp_no emp_name login level hod_name assigend_ip loggedin_ip attendece_location shift_timing e31446 amit singh 09:39 direct p00212 172.29.23.53 172.29.23.53 cso-ackruti star-6f 09:30-18:30 e31446 amit singh 09:39 direct p00212 172.29.23.53 172.29.23.53 cso-ackruti star-6f 09:30-18:30 e39787 anita haridas shenoy 09:41 indirect e31446 172.29.24.38 172.29.23.55 cso-ackruti star-6f 09:30-18:30 e39787 anita haridas shenoy 09:41 indirect e31446 172.29.24.38 172.29.24.38 cso-ackruti star-6f 09:30-18:30 e39787 anita haridas shenoy 09:41 indirect e31446 172.29.24.38 172.29.23.55 cso-ackruti star-6f 09:30-18:30 e39787 anita haridas shenoy 09:41 indirect e31446 172.29.24.38 172.29.24.38 cso-ackruti star-6f 09:30-18:30 e37731 ramesh shukla 09:40 indirect e31446 172.29.23.43 172.29.23.43 cso-ackruti star-6f 09:30-18:30 e37731 ramesh shukla 09:40 indirect e31446 172.29.23.43 172.29.23.55 cso-ackruti star-6f 09:30-18:30 e33995 rakesh sharma 08:21 direct p00212 172.29.23.17 172.29.23.17 cso-ackruti star-6f 09:30-18:30 e43130 lubna shaikh 09:37 indirect e33995 172.29.23.54 172.29.23.54 cso-ackruti star-6f 09:30-18:30 e43130 lubna shaikh 09:37 indirect e33995 172.29.23.54 172.29.23.58 cso-ackruti star-6f 09:30-18:30 e43130 lubna shaikh 09:37 indirect e33995 172.29.23.54 172.29.23.54 cso-ackruti star-6f 09:30-18:30 e43130 lubna shaikh 09:37 indirect e33995 172.29.23.54 172.29.23.58 cso-ackruti star-6f 09:30-18:30 e43455 manish shukla indirect e33995 172.29.23.45 172.29.23.45 cso-ackruti star-6f 09:30-18:30 e44920 shweta salve 09:18 indirect e33995 172.29.23.55 172.29.23.55 cso-ackruti star-6f 09:30-18:30
now want filter data in such manner, can data following output:
emp_no emp_name login level hod_name assigend_ip loggedin_ip attendece_location shift_timing e31446 amit singh 9:39 direct p00212 172.29.23.53 172.29.23.53 cso-ackruti star-6f 09:30-18:30 e39787 anita haridas shenoy 9:41 indirect e31446 172.29.24.38 172.29.23.55 cso-ackruti star-6f 09:30-18:30 e37731 ramesh shukla 9:40 indirect e31446 172.29.23.43 172.29.23.43 cso-ackruti star-6f 09:30-18:30 e33995 rakesh sharma 8:21 direct p00212 172.29.23.17 172.29.23.17 cso-ackruti star-6f 09:30-18:30 e43130 lubna shaikh 9:37 indirect e33995 172.29.23.54 172.29.23.54 cso-ackruti star-6f 09:30-18:30 e43455 manish shukla indirect e33995 172.29.23.45 172.29.23.45 cso-ackruti star-6f 09:30-18:30 e44920 shweta salve 9:18 indirect e33995 172.29.23.55 172.29.23.55 cso-ackruti star-6f 09:30-18:30
the output should contain first record of each employee.. how can write query ?
the following full working example using row_number function. key part following row:
row_number() on ( partition [emp_no] order [emp_no] )
it means "id" number generated each row, grouping rows [emp_no] column. if need other criteria sort, can use 1 of columns.
this whole code:
set nocount on go declare @datasource table ( [emp_no] varchar(6) ,[emp_name] nvarchar(24) ,[login] varchar(6) ,[level] nvarchar(25) ,[hod_name] nvarchar(24) ,[assigend_ip ] nvarchar(64) ,[loggedin_ip ] nvarchar(64) ,[attendece_location] nvarchar(64) ,[shift_timing] nvarchar(64) ) insert @datasource values ('e31446','amit singh','09:39',' direct','p00212','172.29.23.53','172.29.23.53','cso-ackruti star-6f','09:30-18:30') ,('e31446','amit singh','09:39',' direct','p00212','172.29.23.53','172.29.23.53','cso-ackruti star-6f','09:30-18:30') ,('e39787','anita haridas shenoy','09:41',' indirect','e31446','172.29.24.38','172.29.23.55','cso-ackruti star-6f','09:30-18:30') ,('e39787','anita haridas shenoy','09:41',' indirect','e31446','172.29.24.38','172.29.24.38','cso-ackruti star-6f','09:30-18:30') ,('e39787','anita haridas shenoy','09:41',' indirect','e31446','172.29.24.38','172.29.23.55','cso-ackruti star-6f','09:30-18:30') ,('e39787','anita haridas shenoy','09:41',' indirect','e31446','172.29.24.38','172.29.24.38','cso-ackruti star-6f','09:30-18:30') ,('e37731','ramesh shukla',' 09:40',' indirect','e31446','172.29.23.43','172.29.23.43','cso-ackruti star-6f','09:30-18:30') ,('e37731','ramesh shukla',' 09:40',' indirect','e31446','172.29.23.43','172.29.23.55','cso-ackruti star-6f','09:30-18:30') ,('e33995','rakesh sharma',' 08:21',' direct','p00212','172.29.23.17','172.29.23.17','cso-ackruti star-6f','09:30-18:30') ,('e43130','lubna shaikh','09:37',' indirect','e33995','172.29.23.54','172.29.23.54','cso-ackruti star-6f','09:30-18:30') ,('e43130','lubna shaikh','09:37',' indirect','e33995','172.29.23.54','172.29.23.58','cso-ackruti star-6f','09:30-18:30') ,('e43130','lubna shaikh','09:37',' indirect','e33995','172.29.23.54','172.29.23.54','cso-ackruti star-6f','09:30-18:30') ,('e43130','lubna shaikh','09:37',' indirect','e33995','172.29.23.54','172.29.23.58','cso-ackruti star-6f','09:30-18:30') ,('e43455','manish shukla','',' indirect','e33995','172.29.23.45','172.29.23.45','cso-ackruti star-6f','09:30-18:30') ,('e44920','shweta salve','09:18',' indirect','e33995','172.29.23.55','172.29.23.55','cso-ackruti star-6f','09:30-18:30') ;with datasource ( select row_number() on ( partition [emp_no] order [emp_no] ) [recordnumber] ,[emp_no] ,[emp_name] ,[login] ,[level] ,[hod_name] ,[assigend_ip ] ,[loggedin_ip ] ,[attendece_location] ,[shift_timing] @datasource ) select [emp_no] ,[emp_name] ,[login] ,[level] ,[hod_name] ,[assigend_ip ] ,[loggedin_ip ] ,[attendece_location] ,[shift_timing] datasource [recordnumber] = 1 set nocount off go
and output:
Comments
Post a Comment