我想比较和计算同一数据集中的行。
myDataTable
hours_id(PK) | _person_id | _project_id | date_of_hour
1 | pe1 | pr1 | 13.10.2011
2 | pe22 | pr1 | 13.10.2011
3 | pe1 | pr1 | 15.10.2011 *
4 | pe1 | pr1 | 13.10.2011
5 | pe1 | pr1 | 13.10.2011
6 | pe22 | pr22 | 13.10.2011
7 | pe1 | pr22 | 15.10.2011 *
8 | pe1 | pr1 | 15.10.2011 *
9 | pe22 | pr22 | 13.10.2011
10 | pe22 | pr22 | 13.10.2011
11 | pe1 | pr1 | 16.10.2011 **
_project_id(GUID)
在我的计划中,我可以选择_person_id_2 = pe1
,date_of_begin = 13.10.2011
和date_of_end = 15.10.2011
。我想得到这个结果:
pe1 pr1 13.10.2011 3 //(count 3 rows are the same)(ROWS 1,4,5)
pe1 pr1 15.10.2011 2 //(ROWS 3,8)
pe1 pr22 15.10.2011 1 //(ROW 7)
当我选择_person_id_2 = pe22
,date_of_begin = 13.10.2011
和date_of_end = 15.10.2011
时,我希望得到这样的结果:
pe22 pr1 13.10.2011 1 //(ROW 2)
pe22 pr22 13.10.2011 1 //(ROW 6)
pe22 pr22 15.10.2011 2 //(ROWS 9,10)
我正在使用SQL Server 2008.希望您了解我想要问的内容。
答案 0 :(得分:4)
Select
_person_id, _project_id, date_of_hour, count(*)
from
myDataTable
where
_person_id = 'pe1'
and
date_of_hour between '13.10.2011' and '15.10.2011'
group by
_person_id, _project_id, date_of_hour
注意:据我所知,当你写'13 .10.2011'时,你谈的是一个成熟的日期,而date_of_hour是以日期或日期时间格式。如果不是这种情况,您应该将cast字符串和列设置为有效日期。