日期:2014-05-18  浏览次数:20560 次

再次请教(续昨日)
昨日说道:如下
我是想把整个表都查询出来,并不是要看那一列的和。    
应该说,当我这个表中的某列的和达到了一个值,且在某2个时间段内时的查询结果。

比如:表TABLE有A,B,C三列
A为时间,B为一个数字列,C为备注。

当B列的和达到50时,且A列在2007-6-1和2007-6-30之间时。

是要查询出这三列不是说B那一列。

今天想就上面问题在进一步说明
有一表TABLE有A,B,C,D四列
A为时间,B为一个数字列,C为备注。(A列是随系统时间变的)

能不能判断当C在当月累计达到一个值的查询结果。

------解决方案--------------------
樓主說的是這個意思?

declare @t table(
a varchar(10),
b int,
c int)

insert @t select '2007-05-01 ', 30, 5
union all select '2007-06-01 ', 20, 3
union all select '2007-06-12 ', 15, 6
union all select '2007-06-14 ', 30, 2
union all select '2007-06-28 ', 40, 6
union all select '2007-07-03 ', 12, 7
union all select '2007-07-13 ', 53, 3
union all select '2007-07-15 ', 52, 5


select * from @t
where a between '2007-06-01 ' and '2007-06-30 '
and exists(select 1 from @t
where a between '2007-06-01 ' and '2007-06-30 '
having sum(b) > 50)


/*
a b c
---------- ----------- -----------
2007-06-01 20 3
2007-06-12 15 6
2007-06-14 30 2
2007-06-28 40 6

(所影响的行数为 4 行)
*/