Эквивалентный синтаксис SQL для Linq - PullRequest
0 голосов
/ 09 сентября 2018

Мне нужна помощь для написания синтаксиса linq ниже SQL-запроса.

Бизнес: из таблицы PhoneNumberClick_Table, мне нужно получить TotalCount, CountWithWhereCondition и CountWithUniqueValue по дате:

SELECT 
    FORMAT([ClickTime], 'yyyy-MM-dd') DateTimeField,
    COUNT (*) CountTotalClick,
    COUNT ((CASE PhoneNumber WHEN 'NotProvided' THEN 1 ELSE NULL END)) CountNumberProvided,
    COUNT ((CASE PhoneNumber WHEN 'NotProvided' THEN NULL ELSE 1 END))  CountNumberNotProvided,
    COUNT (DISTINCT PhoneNumber) CountUniqueNumber
FROM 
    [dbo].[PhoneNumberClick_Table]
GROUP BY
    FORMAT([ClickTime], 'yyyy-MM-dd')
ORDER BY 
    FORMAT([ClickTime], 'yyyy-MM-dd') 

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

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

0 голосов
/ 09 сентября 2018

используйте sum вместо count для оператора case, и вы должны изменить логику для номера телефона, предоставленного и не предоставленного, как мой запрос

SELECT 
      FORMAT([ClickTime], 'yyyy-MM-dd') DateTimeField
     ,COUNT (*) CountTotalClick 
     ,sum((case when  PhoneNumber is not null then 1 else 0 end)) CountNumberProvided 
     ,sum((case when  PhoneNumber= 'NotProvided' then 0 else 1 end))  CountNumberNotProvided 
     ,COUNT (DISTINCT PhoneNumber) CountUniqueNumber
  FROM [dbo].[PhoneNumberClick_Table]
  GROUP by FORMAT([ClickTime], 'yyyy-MM-dd')
  ORDER BY FORMAT([ClickTime], 'yyyy-MM-dd')
...