akhter86 Ответов: 1

Разделите данные по базовому значению столбца


у меня есть записи в трех колонках, как это
EmpID	       DateTime	       StatusINOUT
1	    2018-05-26 08:44          1
1	    2018-05-26 08:44	      2
2	    2018-05-28 08:44	      1
2           2018-05-28 12:44	      2                 
1           2018-05-21 08:44	      1
1	    2018-05-21 10:44	      2
2	    2018-05-23 08:44	      1
2           2018-05-23 08:44	      2



Теперь я хочу отобразить статус wise INTIME(1) и OUTTIME(2), как показано ниже

Empid	INTIME(1)	           OUTIME(2)
1	 2018-05-26 08:44	 2018-05-26 08:44
2	 2018-05-28 08:44	 2018-05-28 12:44
1	 2018-05-21 08:44	 2018-05-21 10:44
2	 2018-05-23 08:44	 2018-05-23 08:44


Что я уже пробовал:

Я попробовал ниже запрос только он возвращает одну строку против одного empID но у меня есть несколько данных против одного идентификатора сотрудника


select Empcode, s1 as 'INOUT (1)INTime', s2 as 'INOUT(2)OutTime' 
from 
( 
  select Empcode,Time,INOUT,Date
  from HR2 
) d 
pivot 
( 
  max(Date) 
  for INOUT in (s1,s2) 
) piv;

Maciej Los

Вы отметили вопрос как C#, но используете SQL.

Richard Deeming

Это, кажется, то же самое, что: https://www.codeproject.com/Questions/1271952/Display-data-in-gridview-from-row-to-column[^]

Вероятно, это твой одноклассник? Возможно, вам стоит собраться вместе и поработать над домашним заданием.

1 Ответов

Рейтинг:
5

OriginalGriff

Попробовать это:

Select EmpID, 
    MIN([DateTime]) as InTime, 
    MAX([DateTime]) as OutTime
FROM (SELECT EmpID, [DateTime], CAST([DateTime] AS DATE) AS DT FROM HR2) a
GROUP BY a.EmpID, a.DT


Member 12314309

это не моя душа.

OriginalGriff

И работает ли ваше решение?