Подзапрос функции приведения - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть следующий код, который я использую для транспонирования некоторых данных (см. Ниже);однако при запуске кода я получил сообщение «Тип данных операнда datetime2 недопустим для оператора суммирования», что, как я полагаю, связано с тем фактом, что в столбце [RESULT_DT_TM] есть значения даты и времени.С помощью выдающихся авторов я сделал очень простой код, который удаляет дату из [RESULT_DT_TM]:

select cast([RESULT_DT_TM] as time (0)) as [result_dt]
 from ED_Vitals_Import_Master 

Я хотел бы включить этот код в основной запрос, чтобыЯ использую новую переменную [result_dt], но у меня возникают проблемы при ее внедрении.Можно ли сделать то, что я ищу?

Select *
From  (
    Select a.[PT_FIN]
          ,B.*
     From  (Select *,RN=Row_Number() over (Partition By PT_FIN Order by [RESULT_DT_TM]) From ED_Vitals_Import_Master ) A
     Cross Apply (values (concat('Time' ,RN),[RESULT_DT_TM])
                        ,(concat('Weight'   ,RN),[WEIGHT_RESULT])
                        ,(concat('SysBp'   ,RN),[SYSBP_RESULT])
                        ,(concat('DiaBP',RN),[DIABP_RESULT])
                        ,(concat('Temp' ,RN),[TEMPERATURE_RESULT])
                        ,(concat('Oxy'  ,RN),[OXYGEN_SAT_RESULT])
                        ,(concat('Fio'  ,Rn),[FIO2_RESULT])
                 ) B(Item,Value)
   ) src
 Pivot (sum(Value) for Item in  ([RESULT_DT_TM1],[Weight1],[Sysbp1],[DiaBP1], [Temp1], [Oxy1], [Fio1]
                            ,[RESULT_DT_TM2],[Weight2],[Sysbp2],[DiaBP2], [Temp2], [Oxy2], [Fio2]
                            ,[RESULT_DT_TM3],[Weight3],[Sysbp3],[DiaBP3], [Temp3], [Oxy3], [Fio3]
                            ,[RESULT_DT_TM4],[Weight4],[Sysbp4],[DiaBP4], [Temp4], [Oxy4], [Fio4]
                            ) ) pvt

1 Ответ

0 голосов
/ 11 декабря 2018

Поскольку вы смешиваете типы данных ... возможно, было бы более полезно условное агрегирование.

Пример

Select a.[PT_FIN]
      ,[RESULT_DT_TM1] = max(case when RN=1 then [RESULT_DT_TM] end)
      ,[Weight1]       = max(case when RN=1 then [Weight] end)
      ,[Sysbp1]        = max(case when RN=1 then [Sysbp] end)
      ,[DiaBP1]        = max(case when RN=1 then [DiaBP] end)
      ,[Temp1]         = max(case when RN=1 then [Temp] end)
      ,[Oxy1]          = max(case when RN=1 then [Oxy] end)
      ,[Fio1]          = max(case when RN=1 then [Fio] end)
      ,[RESULT_DT_TM2] = max(case when RN=2 then [RESULT_DT_TM] end)
      ,[Weight2]       = max(case when RN=2 then [Weight] end)
      ,[Sysbp2]        = max(case when RN=2 then [Sysbp] end)
      ,[DiaBP2]        = max(case when RN=2 then [DiaBP] end)
      ,[Temp2]         = max(case when RN=2 then [Temp] end)
      ,[Oxy2]          = max(case when RN=2 then [Oxy] end)
      ,[Fio2]          = max(case when RN=2 then [Fio] end)
      --- Extend the Groups Here ---
 From  (Select *,RN=Row_Number() over (Partition By PT_FIN Order by [RESULT_DT_TM]) From ED_Vitals_Import_Master ) A
 Group By a.[PT_FIN]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...