Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с таблицей по запросу  [new]
Lady.36
Member

Откуда:
Сообщений: 5
Здравствуйте. Подскажите пожалуйста как вывести в поле таблицы суммарные значения за 2-ой квартал (с 1.04 по 30.06) если существует поле где выводятся суммарные значения за 1-ый квартал. я новичок...не могу понять как..
эта процедура вносит в таблицу значения за 1-й квартал в поле k1value, а как же за 2-ой квартал??



CREATE PROCEDURE i_insert_pc_sum
@date smalldatetime
AS


declare @date1 smalldatetime
declare @date2 smalldatetime

select @date1 = cast(str(year(@date)) + '-01' + '-01' as smalldatetime)
select @date2 = cast(str(year(@date)) + '-03' + '-31' as smalldatetime)


insert into i_insert_pc_sum (TagName,data,k1value)
select TagName, SUM(Value) from History
where TagName in
('NK_1400_PLAN_STEAM_APH_SPD', 'NK_DBUVS_STEAM_TC_F_SUM_SPD',
'NK_1417-1_STEAM_F_501_SPD',
'NK_1417-1_STEAM_F_501_CU')
and wwRetrievalMode = 'Cyclic'
and wwResolution = 86400000
and datetime >= @date1
and datetime <= @date2

go
6 авг 09, 19:34    [7507943]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с таблицей по запросу  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
declare @t table(dt smalldatetime)
insert into @t(dt)
select '20090101 10:30' union all
select '20090330 10:30' union all
select '20090331 10:30'

declare @date1 smalldatetime
declare @date2 smalldatetime

select @date1 = cast(str(year(getdate())) + '-01' + '-01' as smalldatetime)
select @date2 = cast(str(year(getdate())) + '-03' + '-31' as smalldatetime)

select * from @t
 where dt >= @date1
   and dt <= @date2

dt
-----------------------
2009-01-01 10:30:00
2009-03-30 10:30:00

(2 row(s) affected)
Автор, как Вы думаете, почему 31-е марта не попало в результат?
6 авг 09, 19:41    [7507967]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с таблицей по запросу  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Пример одного из способов, как Вам получить желаемый результат
declare @t table(dt smalldatetime, v int)
insert into @t(dt, v)
select '20090101 10:30', 100 union all
select '20090330 10:30', 200 union all
select '20090331 10:30', 300 union all
select '20090401 10:30', 700 union all
select '20090630 10:30', 800

declare @date1 smalldatetime
declare @date2 smalldatetime
declare @date3 smalldatetime

select @date1 = cast(str(year(getdate())) + '01' + '01' as smalldatetime)
select @date2 = dateadd(month, 3, @date1)
select @date3 = dateadd(month, 3, @date2)

select sum(case when dt >= @date1 and dt < @date2 then v else 0 end) as v1
      ,sum(case when dt >= @date2 and dt < @date3 then v else 0 end) as v2
  from @t
 where dt >= @date1
   and dt < @date3

v1          v2
----------- -----------
600         1500

(1 row(s) affected)
6 авг 09, 19:52    [7507988]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с таблицей по запросу  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
а где поле для второго квартала?

для спящего время бодрствования равносильно сну
7 авг 09, 11:13    [7509659]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить