Is bedos galima computed collumns naudot, jie isskaiciuojami is esamu duomenu, nors kaikuriais atvejais tai gali itakot performance. Kadangi tingiu gilintis i konkrecia uzduoti parodysiu tik kaip jie aplamai naudojami, siaip computed laisvai eina sukurt per management studio nurodant computed column specification, cia tiesiog suscriptinta: BEGIN TRANSACTION GO CREATE TABLE TblWithComputedColumns ( id int NOT NULL IDENTITY (1, 1), x int NOT NULL, y int NOT NULL, suma AS x*y, toString AS cast(id as nvarchar) +' id: '+cast(x as nvarchar) +' x '+cast(y as nvarchar) +' = ' +cast( x * y as nvarchar) ) ON [PRIMARY] GO ALTER TABLE dbo.TblWithComputedColumns ADD CONSTRAINT DF_TblWithComputedColumns_x DEFAULT 0 FOR x GO ALTER TABLE dbo.TblWithComputedColumns ADD CONSTRAINT DF_TblWithComputedColumns_y DEFAULT 0 FOR y GO ALTER TABLE dbo.TblWithComputedColumns ADD CONSTRAINT PK_TblWithComputedColumns PRIMARY KEY CLUSTERED ( id ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO ALTER TABLE dbo.TblWithComputedColumns SET (LOCK_ESCALATION = TABLE) GO COMMIT select Has_Perms_By_Name(N'dbo.TblWithComputedColumns', 'Object', 'ALTER') as ALT_Per, Has_Perms_By_Name(N'dbo.TblWithComputedColumns', 'Object', 'VIEW DEFINITION') as View_def_Per, Has_Perms_By_Name(N'dbo.TblWithComputedColumns', 'Object', 'CONTROL') as Contr_Per -- fake data INSERT INTO TblWithComputedColumns (x,y) VALUES(1,2) INSERT INTO TblWithComputedColumns (x,y) VALUES(10,2434) INSERT INTO TblWithComputedColumns (x,y) VALUES(1323,2434) INSERT INTO TblWithComputedColumns (x,y) VALUES(1213,243) -- select all SELECT * FROM TblWithComputedColumns -- Stai pagal turimus duomenis sukurti kiti columnai kurie gali but naudojami skaityme -- bet computed columns kartais gali stipriai letinti! "If" <baska@hotmail.com> wrote in message news:iu99lq$gr1$1@trimpas.omnitel.net... > Cia ne pirma karta eina panasus uzdaviniai. Jei ukiskai as laikausi > taisykles, kiek imanoma is pradziu uzdavinius spresti per duomenu struktura, > toliau per selectus ir kas lieka atlikti manipuliacijas data setuose. > Nezinau ar galima tame uzdavini eiti ne per selecta, o per duomenu > struktura, tokiu atveju sukurus papildomus laukus jis sprendziasi ukiskai ir > paprastai. > > 1 Sukuriami arba virtualioje lentoje, arba tiesiog fiziskai lentoje pirmu > atveju papildomi du laukai, 1 NrSkirtumai, NrGrupes. Kitais dviem dar vienas > papildomas trecias laukas Nr1 > 2 Esant 2 ir 3 atveju "parsinam" stringa, isskiriam skaiciu ir sukeliam i > Nr1 lauka > 3 i NrSkirtumai lauka sukeliam duomenis, kuriu reiksme lygi, pries tai > esancio ir dabartinio iraso skirtumui(irasu atsortavimas butinas pagal Nr) > 4 Suzymim grupes, kuriu algoritmas skamba panasiai taip, Jei NrSkirtumai > > 1, TAI , NrGrupes = NrGrupes + 1 > > Turint jau tokia struktura toliau nesunkiai gausi rezultata su elementariu > Goup By Selectu pagal NrGrupes lauka. > > P.S Mano praktika sako, kad visada reikia daryti taip db, kad isivaizduoti > jog joje bus maziausiai keli milijonai irasu, todel vengiu kiek imanoma > virtualiu struktura ir tokia struktura organizuociau fiziskai, paciose > lentose duomenu bazeje. > > Cia toks ukiskas sprendimo variantas butu. > > > "zZz" <zZz@zirzilia.lt> wrote in message > news:iu948p$a1a$1@trimpas.omnitel.net... >> Šiandien prireiks, gal kas darėt sekantį grupavimą ir pasidalinsit metodu? >> >> MSSQL 2008 R2 >> >> Yra lenta su lauku NR nvarchar(5) not null. Reikia sugrupuoti pgl. iš >> eilės einančius numerius, >> turėtų sugrupuoti taip (ryšium su tuo, kad kiti parametrai vienodi): >> >> --- >> 1. >> jei yra šie NR - 1, 2, 3, 27, 28, 35, 51, 52, 53, 54 >> >> 1-3 >> 27-28 >> 35 >> 51-54 >> >> --- >> 2. >> Atitinkamai su 1A, 2A, 3A, 27A, 28A, 35A, 51A, 52A, 53A, 54A >> >> 1A-3A >> 27A-28A >> 35A >> 51A-54A >> >> --- >> 3. >> Persidengiančios aibės - 1, 1A, 2, 2A, 3 - turėtų būti atskiros >> >> 1-3 >> 1A-2A >> >> --- >> Domina bet kurio varianto atskirai ir visų variantų bendras sprendimas. >> Ačiū iš anksto. > >