Как выбрать результат запроса как результат в одной строке? - PullRequest
0 голосов
/ 11 мая 2019

Друзья!У меня есть запрос и результат. Когда я выбираю, я получаю результат.Но я хочу видеть этот результат в одной строке.

Теперь результат запроса выглядит так:

Agreement_no Total_Time   Officer_name         Sp/Tt/by_Of    Sp/Tt/for l- pros
999Li74         0:18:19   'Mr.Jason'               0:02:00      0.40 sec
999Li74         0:18:19   'Mr.Jason'               0:02:00      0.25 sec
999Li74         0:18:19   'Mr.Jason'               0:02:00      0.40 sec
999Li74         0:18:19   'Mr.Jason'               0:02:00      0.15 sec
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      0.42 sec
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      0.20 sec
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      1.2 sec
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      11.1 sec
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      3.1 sec
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      0.13 sec

Я запрашиваю этот результат из 12 таблиц JOINED.

Первый столбец - это кредит, одобренный ссудой номер_ соглашения .Второй столбец Total_Time является результатом start_time и end_time с использованием [DATEDIFF] и [OVER PARTITION BY] соглашение_no.Третий столбец - это имя сотрудника, который выдал кредит и утвердил кредит.

4-й столбец ( Sp / Tt / by_Of - общее время, потраченное сотрудником) - это результат start_time и end_time с использованием [DATEDIFF] и [OVER PARTITION BY] Officer_Name .

5-й столбец ( Sp / Tt / для l-профи - тратить общее время на кредитные просы) является результатомstart_time и end_time с использованием [DATEDIFF].

Когда я запрашиваю утвержденные ссуды по дням, тогда я вижу много результатов из-за этой перспективы.

Я хочу, чтобы результат запроса отображался, как показано ниже

Agreement_no Total_Time Officer_name Sp/Tt/by_Of Officer_name2 Sp/Tt/by_Of
999Li74      0:18:19    Mr.Jason     0:02:00     Mr.Firdovsi   0:16:19

Примечание: 5-й столбец не важен.

Если есть другой заем, тогда я хочу, чтобы это также отображалось, как показано ниже

Agreement_no Total_Time Officer_name Sp/Tt/by_Of Officer_name2 Sp/Tt/by_Of
999Li74      0:18:19    Mr.Jason     0:02:00     Mr.Firdovsi   0:16:19
1000Li01     0:27:30    Mr.Jon       0:12:15     Mr.Felaket    0:15:15

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Paul.Но я просто хочу увидеть результат, как показано ниже.

Agreement_no Total_Time Officer_name Sp/Tt/by_Of Officer_name2 Sp/Tt/by_Of

999Li74 0:18:19 Mr.Jason 0:02:00 Mr.Firdovsi 0:16:19

0 голосов
/ 11 мая 2019

Я бы решил решить эту проблему с помощью временных таблиц.Первая таблица, #DataIn, должна содержать результат вашего запроса, как показано в вашей таблице.

    SELECT [Agreement_no]
      ,[Total_Time]
      ,[Officer_name]
      ,[Sp/Tt/by_Of]
      ,CAST(REPLACE([Sp Tt for], ' sec', '') AS decimal(4,2)) AS [Sp/Tt/for l- pros]
    INTO #test1
    FROM #DataIn;

Чтобы получить данные в #DataIn, вы должны изменить свой запрос, используя:

    SELECT … INTO #DataIn …

В моем запросе REPLACE - удалить 'sec' из [Sp / Tt / for l-pros], а CAST - преобразовать значения в десятичные значения.Ваши данные (в # Test1) теперь выглядят так:

Agreement_no Total_Time   Officer_name         Sp/Tt/by_Of    Sp/Tt/for l- pros
999Li74         0:18:19   'Mr.Jason'               0:02:00      0.40
999Li74         0:18:19   'Mr.Jason'               0:02:00      0.25
999Li74         0:18:19   'Mr.Jason'               0:02:00      0.40
999Li74         0:18:19   'Mr.Jason'               0:02:00      0.15
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      0.42
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      0.20
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      1.2
999Li74         0:18:19  'Mr.Firdovsi'              0:16:19      11.1
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      3.1
999Li74         0:18:19  'Mr.Firdovsi'             0:16:19      0.13

Теперь вы можете SUM столбец [Sp / Tt / для l-профи] на имя офицера:

SELECT [Agreement_no]
      ,[Total_Time]
      ,[Officer_name]
      ,[Sp/Tt/by_Of]
      ,CONVERT(varchar, DATEADD(ms, SUM ([Sp/Tt/for l- pros]) * 1000, 0), 114) AS [Sp/Tt/for l- pros]
FROM #test1
GROUP BY [Officer_name], [Agreement_no], [Total_Time], [Sp/Tt/by_Of];

DATEADD вэтот запрос используется для отображения результирующего значения как времени.Для этого я вычислю время в миллисекундах (умножив значения в секундах на 1000).Результат этого запроса:

Agreement_no        Total_Time  Officer_name    Sp/Tt/by_Of Sp/Tt/for l- pros
999Li74             0:18:19     'Mr.Firdovsi'    0:16:19        00:00:16:150
999Li74             0:18:19     'Mr.Jason'       0:02:00        00:00:01:200

С уважением, Пол

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...