Tema: Re: MSSQL : Kaip uzpildyti skyles
Autorius: Jornada Del Muerto
Data: 2010-12-22 15:03:29
Butent neaiski uzduotis...

1. Ar jam reikia tik nuo vieno iki kito iraso viska uzpildyti;
2. Ar jo pradiniai parameatrai data nuo iki ir reikia isgeneruoti visas to diapazono valandas, pvz metu ar 10 metu laiko ir tik jame skyles uzpildyti.


O jeigu taip tupai reikia pagal data suzinoti tinkama reiksme tai va funkcija:

CREATE FUNCTION [dbo].[OmniNews_GetValueByDate] (@data datetime) RETURNS int
AS
BEGIN
 declare @retVal int

 SELECT @retVal=Value 
 From dbo.OmniNews_Skyles 
 WHERE DT = (
  Select max(DT) 
  From dbo.OmniNews_Skyles 
  Where DT <= @data )
 
 RETURN @retVal
END

Pagal lentele:

CREATE TABLE [dbo].[OmniNews_Skyles](
 [id] [int] IDENTITY(1,1) NOT NULL,
 [DT] [datetime] NOT NULL CONSTRAINT [DF_OmniNews_Skyles_DT]  DEFAULT (getdate()),
 [Value] [int] NULL,
 CONSTRAINT [PK_OmniNews_Skyles] PRIMARY KEY CLUSTERED 
(
 [id] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


Dar cia gal pravers funkcija isskaiciuojanti sekancia valanda su max minutemis:

CREATE FUNCTION [dbo].[OmniNews_NextHour] (@data datetime) 
RETURNS datetime
AS
BEGIN
 declare @retVal datetime

 -- Nukerpame minutes ir padarome 59min - ta prasme paskutine valandos minute
 -- Tam kad neiskritinetu kazkokia minute
 Set @retVal = CAST ( (CONVERT(char(14),DATEADD(d,1,@data),25) + '59') As DATETIME)

 RETURN @retVal
END

Nelabai jasna ko jam reik realiai...

"slavik&dimon" <aaa@aaa.lt> wrote in message news:iessbl$thr$1@trimpas.omnitel.net...
> Nu negaliu pasiulyti super kazko konkretaus, kadangi ir klausejas nera iki 
> galo konkretus. Bet tu primesk savo sprendimo neigiamas puses: useris gali 
> net netureti teisiu create, drop table.
> Mano kuklia nuomone, selectinti max(date)+1 tik dar papildomai reikia zinoti 
> kriterijus pagal kuriuos ta max date isrinkti.
>> Tokiu komentuotoju tai pilnas delfis
> Geriau jau tokie komentuotojai, negu pseudo sprendimai (visokie paramstymai, 
> paklijavimai) :)
> 
> 
> "Raimis" <somebody@nomail.com> wrote in message 
> news:iesrdb$ros$1@trimpas.omnitel.net...
>> tai siulyk savo sprendima. Tokiu komentuotoju tai pilnas delfis
>>
>> "slavik&dimon" <aaa@aaa.lt> wrote in message 
>> news:iesibs$b43$1@trimpas.omnitel.net...
>>> Bet tai ar "create temp table", "drop temp table" nera kazkokia tai 
>>> pornografija? Ar cia MSSQL'as toks ribotas, kad negalima issiskaiciuoti 
>>> tos priestai buvusios veliausios datos?
>>>
>>> "Raimis" <somebody@nomail.com> wrote in message 
>>> news:ies6de$nkv$1@trimpas.omnitel.net...
>>>> Mano toks pamastymas:
>>>> kuri laikina lentele #tmp  su Datetime lauku, uzpildai reiksmem is 
>>>> norimo laikotarpio: ...01:00:00, ... 02:00:00 ....
>>>> darai select is laikinos lenteles su subselectu is lentos su duomenimis.
>>>>
>>>>
>>>> "bala nemate" <bala.nemate@gmail.com> wrote in message 
>>>> news:1un0lqe0e15jj.8l3ei098za0a$.dlg@40tude.net...
>>>>> škiasi, tam tikrais monentais, valandiniu periodu, į db atsigula 
>>>>> duomenys
>>>>> su laiko štampu. kaip select'e padaryti, kad tą valandą, kai duomenų 
>>>>> nėra,
>>>>> imtų paskutinę senesnę reikšmę?
>>>>>
>>>>> pvz., table :
>>>>> DT Value
>>>>> ..12:00:00 4
>>>>> ..15:... 6
>>>>>
>>>>> o rezultate
>>>>> DT Value
>>>>> ..12:... 4
>>>>> ..13:... 4
>>>>> ..14:... 4
>>>>> ..15:... 6
>>>>> ..16:... 6
>>>>>
>>>>>
>>>>> dėkings už pamąstymus
>>>>> -- 
>>>>> bn/mj
>>>>> skype : bala.nemate
>>>>> "The blues ain't about making yourself feel better.
>>>>> it's about making other people feel worse."
>>>>> -- Bleeding Gums Murphy
>>>>
>>>>
>>>
>>>
>>
>> 
> 
>