Мне нужно объединить строки в запросе (сводка) - PullRequest
2 голосов
/ 27 мая 2019

У меня проблемы с сводкой запросов:

SELECT *
FROM
(
    SELECT [usuario],
           [codtrab],
           [tna],
           [hora],
           [tipo],
           [fecha]
    FROM prueba
) AS SourceTable PIVOT(AVG([tna]) FOR [tipo] IN([entrada], [salida])) AS PivotTable

Это возвращает таблицу

usuario | codtrab | hora                fecha       entrada salida
name1   | 600     | 08:02:00.0000000    2019-05-17  0       NULL
name1   | 600     | 16:02:00.0000000    2019-05-17  NULL    1
name2   | 200     | 08:10:00.0000000    2019-05-17  0       NULL
name2   | 200     | 16:10:00.0000000    2019-05-17  NULL    1
name3   | 400     | 08:20:00.0000000    2019-05-17  0       NULL
name3   | 400     | 16:20:00.0000000    2019-05-17  NULL    1

Я хочу показать данные в виде таблицы:

usuario codtrab hora                fecha       entrada salida
name1   600     08:02:00.0000000    2019-05-17  0       1
name2   200     08:10:00.0000000    2019-05-17  0       1
name3   400     08:20:00.0000000    2019-05-17  0       1

Ответы [ 2 ]

2 голосов
/ 27 мая 2019

Можете ли вы попробовать после удаления столбца [hora] из выбора? Так как этот столбец имеет несколько значений для имени, такого как «Name1», я думаю, что это создает двойные строки.

SELECT *
FROM
(
    SELECT [usuario],
       [codtrab],
       [tna],
       --[hora],
       [tipo],
       [fecha]
FROM prueba
) AS SourceTable 
PIVOT(AVG([tna]) FOR [tipo] IN([entrada], [salida])) AS PivotTable
0 голосов
/ 27 мая 2019

т.е. Вы можете агрегировать результаты вашего поворота. Я не уверен, каковы ваши требования в отношении, например, hora.

WITH Pivoted
AS
(
SELECT 
    *
FROM
(
    SELECT [usuario],
           [codtrab],
           [tna],
           [hora],
           [tipo],
           [fecha]
    FROM prueba
    group by [usuario], 
) AS SourceTable PIVOT(AVG([tna]) FOR [tipo] IN([entrada], [salida])) AS PivotTable
) 
SELECT 
  [usuario],
  [codtrab],
  min([hora]) as [hora],
  [fecha],
  max(entrada) as entrada,
  max(salida) as salida
FROM Pivoted
GROUP BY [usuario], [codtrab], [fecha] ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...