我需要编写下面的SQL查询的linq语法的帮助。
业务是:从表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')
答案 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,我以前使用过并且对我非常有用,为了使该工具最适合您,请尝试对查询进行细分,然后在转换后进行总结