【问题标题】:Group by clientId and date in SQL在 SQL 中按 clientId 和日期分组
【发布时间】:2021-05-02 09:16:13
【问题描述】:

我有下表:

我想按日期和IsDeleted = 0 的特定客户进行分组。

更准确地说,我想这样做:

此屏幕截图中的数据不反映表格中的数据。

因此,例如,客户 Anne Marie 在我的数据库中的 ClientId = 12。

我需要为每个月分组,然后再按另一个分组?我的意思是,我可以在一个月内拥有多条记录..

我希望我发布了明确的问题,如果没有,请写信以提供更多详细信息。

更新:

我需要这样的东西:

select 
    Convert([date], [Date]) as [Date], 
    TotalAttendants as Total,
    FemaleAttendants as Women, 
    MaleAttendants
from
    dbo.Events
where 
    EventTypeId = 1 
    and IsDeleted = 0
group by 
    Convert([date], date)
order by 
    Convert([date], date)

只有我需要将这些日期包装成月(T-SQL 或类似的东西)。

最后,我需要将此查询重写为 linq for C#

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    看来,从您所需输出的示例图片来看,您只需要使用sum 聚合函数并在每种情况下按date 分组,但是不清楚您所说的“另一个分组依据”是什么意思,如果需要,请澄清。

    select concat(Left(DateName(month,[date]),3), ' ', Year([date])), 
        sum(TotalAttendants) as Total,
        Sum(FemaleAttemdants) as Women,
        Sum(MaleAttendants) as Men
    from table
    where IsDeleted=0
    group by concat(Left(DateName(month,[date]),3), ' ', Year([date]))
    

    【讨论】:

    • 它有效,只是我需要将日期显示为:[January, February, March..] 将这些日期分组为一个月本身
    • @Stefan0309 我进行了编辑以仅获取月份和年份。
    • 你能把它写成一个 linq lambda 表达式吗?我会接受你的回答。谢谢
    • @Stefan0309 您根本没有标记 c# 或在您的问题中指出 - 抱歉我不使用 linq
    猜你喜欢
    • 2021-01-03
    • 2021-03-09
    • 2021-12-06
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多