Количество записей SQL со значением на дату

#sql-server #tsql

Вопрос:

У меня есть таблица в SQL Server:

 CREATE TABLE healthRegistration
(
    ID uniqueidentifier PRIMARY KEY,
    RegisterDateTime DateTime NOT NULL,
    RUFeelingWell Bool NOT NULL
);
 

Это RegisterDateTime дата и время, когда пользователь создал реестр, и RUFeelingWell является логическим значением.

Я хочу создать запрос, который возвращает 3 столбца: Дата регистрации, Количество записей с RUFeelingWell = False на эту дату, Количество записей с RUFeelingWell = True на эту дату

Как я могу это сделать?

Ответ №1:

 SELECT CAST(T.RegisterDateTime AS DATE)REGISTERDATE,
SUM
(
  CASE
   WHEN T.RUFeelingWell =1 THEN 1
   ELSE 0
  END
)AS TRUE_RECORDS,
SUM
( CASE
   WHEN T.RUFeelingWell =0 THEN 1
   ELSE 0
  END
)AS FALSE_RECORDS
FROM healthRegistration AS T
GROUP BY CAST(T.RegisterDateTime AS DATE)
 

Ответ №2:

Попробуйте выполнить этот запрос:

 Select 
Convert(char(8), RegisterDateTime, 112), 
Sum(Case RUFeelingWell When 1 Then 1 Else 0 End) As wellnos,
Sum(Case RUFeelingWell When 0 Then 1 Else 0 End) As notwellnos
From healthRegistration
Group By Convert(char(8), RegisterDateTime, 112)
Order By Convert(char(8), RegisterDateTime, 112)
 

Здесь Преобразование(символ(8), RegisterDateTime, 112) дает дату в формате ГГГГММДД, так что записи за день суммируются вместе.
Логические значения хранятся в базе данных как 1 и 0