如何创建 SQL 查询来计算按日期分组和连接的项目? [关闭]

Posted

技术标签:

【中文标题】如何创建 SQL 查询来计算按日期分组和连接的项目? [关闭]【英文标题】:How to create a SQL query to count items grouped and concatenated by date? [closed] 【发布时间】:2016-10-19 12:16:33 【问题描述】:

请帮我得到这个输出。

我的意见:

-----------------------------------------------------
EMP_Id |    EMP_Name |  Date_Worked             |   Enc_No
---------------------------------------------------
100    |    Aj       |  2016-10-10 00:00:00.000 |   123
100    |    Aj       |  2016-10-10 00:00:00.000 |   124
101    |    Siv      |  2016-10-10 00:00:00.000 |   125
101    |    Siv      |  2016-10-11 00:00:00.000 |   126
102    |    Nav      |  2016-10-10 00:00:00.000 |   127
102    |    Nav      |  2016-10-11 00:00:00.000 |   128    
--------------------------------------------------------

我需要这样的输出

---------------------------------------------------------
EmplyeeId | EmplyeeName | 10/10/2016 | 11/10/2016
---------------------------------------------------------
100       | Aj          | 2          |  0
101       | Siv         | 1          |  1
102       | Nav         | 1          |  1
---------------------------------------------------------

【问题讨论】:

你尝试了什么,什么没用? 这些日期是静态的吗10/10/2016 | 11/10/2016 参见条件聚合pivot 使用数据透视表:***.com/a/39569696/6606630 请注意,日期列不固定。 【参考方案1】:
 SELECT * FROM #A
 PIVOT
(
 count(Enc_No) 
  FOR DATE_WORKED IN([2016-10-10],[2016-10-11])
) PIV;

【讨论】:

请注意,这里的日期列不固定。 你能解释一下你投了票吗@RajaA ***.com/questions/27422109/… 有了这个答案你会不满意吗?对于某种信息,我们可以用多种方式编写查询......@RajaA 我问你给负分...@RajaA【参考方案2】:

我认为您在谈论动态枢轴。 我在我的项目中实现了动态枢轴。我根据您的输入为您提供示例脚本。请检查它。我相信它会对你有所帮助。

这里 EmployeeWork 是一个 TableName 。

DECLARE @FactorText varchar(max)=null

SELECT @FactorText = COALESCE(@FactorText + '], ', '') + CAST('[' + FactorText AS VARCHAR(50)) 
                     FROM (SELECT DISTINCT CONVERT(varchar, Date_Worked, 103) as FactorText FROM EmployeeWork) AS EmployeeWork

                    SET  @FactorText =  @FactorText + ']'

DECLARE @DynamicPIVOT AS VARCHAR(MAX)

                SELECT @DynamicPIVOT = 'SELECT EMP_Id,emp,' + @FactorText + ' FROM ( select EMP_Id , EMP_Name as emp, EMP_Name
                as AppliedValue,  CONVERT(varchar, Date_Worked, 103) as FactorText FROM EmployeeWork
                ) EmployeeWorkData

                PIVOT
                      (
                   count(AppliedValue) FOR FactorText IN (' + @FactorText + ')
                      ) Result;'


EXEC (@DynamicPIVOT)

如果有任何查询告诉我。根据您的要求,它运行良好。

谢谢。

【讨论】:

以上是关于如何创建 SQL 查询来计算按日期分组和连接的项目? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何计算 SQL Server 中按日期和用户分组的条目之间的平均时间?

使用按日期分组的 sql 查询

SQL加入多个子查询 - 按日期计算打开/关闭

如何在 Oracle SQL 上进行查询以获取时间间隔,按特定字段分组

按日期和编号分组合并数据以创建新列

SQL查询来计算日期范围内的项目?