SQL Server聚合/分组日期并将它们相加

时间:2017-12-16 07:49:12

标签: sql sql-server tsql

卡片会在一天内多次滑动,我的数据是卡片编号和表格中的日期。我正在尝试创建一个用户定义的函数来聚合它们并在新列中显示滑动次数。

我将传递卡号作为输入。

我正在使用SQL Server 2012.

5678907 2017-06-11  
5678907 2017-06-11  
5678907 2017-06-11  
5678907 2017-06-14  
5678907 2017-06-15  

输出

5678907 2017-06-11  3  
5678907 2017-06-14  1  
5678907 2017-06-15  1    

2 个答案:

答案 0 :(得分:1)

只需将group by子句与聚合函数count()

一起使用
select Card, [date], count([date]) [Swipecount] from table
group by Card, [date]

答案 1 :(得分:0)

另一种方法是 -

SELECT DISTINCT 
[Card number],[Date],COUNT(*) OVER (PARTITION BY [Card number],[Date]) cnt
FROM yourtableName

如果您使用分组依据,请使用COUNT(*)。 COUNT(日期)/ 计数(列) - 忽略NULL值 /如果其中一个日期为NULL,则输出为0。

            SELECT [Card number],[Date],COUNT(*)  cnt
            FROM 
            (
                select 5678907 [Card number],'2017-06-11' [Date]  UNION ALL 
                select 5678907 ,'2017-06-11'   UNION ALL 
                select 5678907 ,'2017-06-11'   UNION ALL  
                select 5678907 ,'2017-06-14'   UNION ALL 
                select 5678907 ,NULL 
            )t
            GROUP BY [Card number],[Date]

            /*------------------------
            OUTPUT 
            ------------------------*/
            Card number Date       cnt
            ----------- ---------- -----------
            5678907     NULL       1
            5678907     2017-06-11 3
            5678907     2017-06-14 1

            (3 row(s) affected)