|  | v7: Подскажите с отчетом | ☑ | 
    
        | 0
    
        AntiBuh   20.03.12✎ 18:11 | 
        Ступор какой-то напал
 
 имеется скл таблица с полями Дата типа DATETIME и Сумма
 нужно посчитать сколько определенных сумм попадает в интервалы времени за каждую дату
 например:
 сумма < 100
 20.03.2011
 0:00-1:00 3 раза
 1:00-2:00 5 раз
 ....
 подскажите алгоритм
 реально затупил :(
 |  | 
    
        | 1
    
        viktor_vv   20.03.12✎ 18:24 | 
        Дату и время приводишь к началу интервала и Group by по этому полю с Count. 
 
 Привести можно convert из DateTime в строку с обрезанием.
 
 Ну это так навскидку.
 |  | 
    
        | 2
    
        AntiBuh   20.03.12✎ 18:36 | 
        ясно, спасибо     |  | 
    
        | 3
    
        AntiBuh   21.03.12✎ 08:39 | 
        Вроде получилось
 select DatePart(hh, CloseDate) as Hr, Count(BaseSum) as AllSum Count(BaseSum) if BaseSum < 150 as Summa
 from tab
 WHERE (CloseDate >= CONVERT(DATETIME, '2012-03-20 00:00:00', 102))
 Group By DatePart(hh, CloseDate)
 
 вот еще бы чтоб посчиталось количество с условием
 типа такого: Count(BaseSum) if BaseSum < 150 as ...
 как правильно написать?
 |  | 
    
        | 4
    
        Ёпрст   гуру 21.03.12✎ 08:41 | 
        case     |  | 
    
        | 5
    
        viktor_vv   21.03.12✎ 08:55 | 
        (3) Только в таком варианте значения из одного интервала по часам, но в разных датах попадут в одну строку.     |  | 
    
        | 6
    
        AntiBuh   21.03.12✎ 08:58 | 
        (4) а так разве не в один столбец результат попадет?
 (5) по датам я разобью
 |  | 
    
        | 7
    
        Ёпрст   гуру 21.03.12✎ 08:59 | 
        (6) че ?     |  | 
    
        | 8
    
        Ёпрст   гуру 21.03.12✎ 09:00 | 
        если нужно результать порезать - тогда having используй     |  | 
    
        | 9
    
        Ёпрст   гуру 21.03.12✎ 09:00 | 
        если тупо в селекте - тогда case     |  | 
    
        | 10
    
        AntiBuh   21.03.12✎ 09:05 | 
        Нужно общее Количество посчитать и с условием
 чтоб в одной строке было 2 разных колонки
 |  | 
    
        | 11
    
        Ёпрст   гуру 21.03.12✎ 09:06 | 
        (10) ну и пиши case для второй колонки     |  | 
    
        | 12
    
        AntiBuh   21.03.12✎ 12:27 | 
        (11) Типа такого?
 select DatePart(dd, CloseDate) as D, DatePart(hh, CloseDate) as Hr, Count(BaseSum) as AllSumma ,
 case
 When BaseSum < 150 Then Count(BaseSum)
 End
 from Checks
 WHERE (CloseDate >= CONVERT(DATETIME, '2012-03-20 00:00:00', 102)) And (CloseDate <= CONVERT(DATETIME, '2012-03-21 00:00:00', 102))
 Group By DatePart(dd, CloseDate),DatePart(hh, CloseDate)
 |  | 
        Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший