Tema: Re: Dar karta T-SQL select'as
Autorius: Jornada Del Muerto
Data: 2011-08-09 15:00:22
Sujungimas, kada kitos lentos irasas nebutinai egzistuoja, yra daromas su LEFT/RIGHT join'ais.

Pvz.:

Select
    L.id, 
    L.konfid_id, 
    L.datos
    sum(case when L.busena = 1 then L.kiekis else null end) busena_1_kiekis,
    sum(case when L.busena = 2 then L.kiekis else null end) busena_2_kiekis,

    -- agreguojame kazka is tos lentos [cia rasykis ko tau reik]
    sum(IsNull(LK.skaiciuojamas_laukas, 0)) LK_laukas,
    LK.tiesiog_isvedamas_laukas LK_simple_field

from 
    lenta L
left join likuc LK On 
    LK.id = on L.id and LK.konfig_id = L.konfig_id
group by 
    L.id, 
    L.konfig_id, 
    L.datos

-- agr. LK
    LK.tiesiog_isvedamas_laukas

Tada jai ner kazkokio iraso likuc lentoje visi is tos lentos traukiami laukai bus NULL tai jei toliau darysii agregacija (tipo sum, count, avg ir t.t.. ) su jos laukais tai pradzioj statai funkcija IsNull(likuc.laukas, 0).


P.S. Tiesa nepakenciu uzklausu su keliom lentom ir be aliasu tai sualiasinau ;) L - lenta, LK - likuc, tiesiog skaitomumas uzklausos mazeja kada dar visas lentos name prie kiekvieno lauko eina.





---

Freelancer Developer | MSSQL 2000, MSSQL 2005, MSSQL 2008 Certified via brainbench & odesk.com
http://www.lythum.lt



"Rimokas" <rimasu@ut.lt> wrote in message news:j1qo69$vp0$1@trimpas.omnitel.net...
>  Sveiki ,
> 
>   Neseniai man gerai issaiskinot , kaip  pasidaryt suminius i eilutes is 
> judejimo lentos . Viskas puikiai pavyko . Dabar bandau padaryt dar viena 
> dalyka , bet neistengiu ... :( .
> 
>   Yra ta pagrindine lenta , kaip isisaiskinot anksciau :
> 
>> principas toks
>>
>> select
>>  lenta.id, lenta.konfid_id, lenta.datos
>>  sum(case when lenta.busena = 1 then lenta.kiekis else null end)
>> busena_1_kiekis,
>>  sum(case when lenta.busena = 2 then lenta.kiekis else null end)
>> busena_2_kiekis
>> from lenta
>> group by lenta.id, lenta.konfig_id, lenta.datos
> 
>   Dabar reiktu prijungti dar viena lentele - likuciu menesio pradziai . 
> Beda ta , kad jei jungiu su kokiu "full outer join likuciai on ( likuc.id = 
> lenta.id and likuc.konfig_id = lenta.konfig_id)"  tuomet nematau irasu , 
> kuriu judejimo nebuvo  , t.y. "lenta" lenteleje tokiu irasu nera .  Kaip 
> sujungti tokias lentas ?
> 
> Is anksto dekingas uz pagalba ! :-)
> 
> 
>