【问题标题】:SQL to Linq equivalent syntaxSQL 到 Linq 的等效语法
【发布时间】:2018-09-09 05:49:26
【问题描述】:

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

业务是:从表PhoneNumberClick_Table,我需要得到TotalCountCountWithWhereConditionCountWithUniqueValue datewise:

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

【问题讨论】:

    标签: c# sql linq unique


    【解决方案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')
    

    【讨论】:

    • 实际上我的 SQL 运行良好。但我需要将其转换为 Linq 语法
    【解决方案2】:

    尝试使用这个tool,我以前用过它,对我来说效果很好,为了让这个工具最适合你,尝试分割你的查询,然后在转换后总结它们

    【讨论】:

      猜你喜欢
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 2015-10-01
      • 2017-09-24
      • 2015-10-24
      相关资源
      最近更新 更多