如何使用具有条件的sql来计算某些不同的记录

时间:2016-10-17 21:02:17

标签: sql count

我的数据结构如下:

ID   Location Flag1 Flag2 Flag3  Date
A    A1        0      1       0  01/01/2013
A    A2        1      0       0  01/02/2013
A    A2        1      0       0  01/02/2013
A    A3        1      0       0  01/03/2013
A    A3        0      1       0  01/03/2013

我需要计算(在多个ID中),具有不同标志的不同位置的不同日期的数量。理想的结果如下:

ID  Date         Count
A   01/01/2013   1
A   01/02/2013   1
A   01/03/2013   2

尽管具有相同的Flag1值,但数据中的元素导致A与位置A2不同,但我不关心那些并且想要在理想结果中汇总数据。

我尝试过使用它:

select count distinct ID, Location, Flag1, Flag2, Flag3, count (distinct
ID||Location||Date) as count 
group by ID, Location

这似乎不对。

1 个答案:

答案 0 :(得分:1)

这是一种方法。只需在子查询中获取不同的记录,然后对数据进行计数和分组。

SELECT Id, [Date], COUNT(*) AS cnt
FROM
(
    SELECT DISTINCT ID, Location, Flag1, Flag2, Flag3, [Date]
    FROM YourTable
) AS data
GROUP BY data.Id, data.[Date]