SQL到Linq的等效语法

时间:2018-09-09 05:49:27

标签: c# sql linq unique

我需要编写下面的SQL查询的linq语法的帮助。

业务是:从表PhoneNumberClick_Table中,我需要按日期获取TotalCountCountWithWhereConditionCountWithUniqueValue

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 :(得分:1)

使用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')

答案 1 :(得分:0)

尝试使用此tool,我以前使用过并且对我非常有用,为了使该工具最适合您,请尝试对查询进行细分,然后在转换后进行总结