[ borcha @ 22.07.2007. 11:36 ] @
E, ovako...
evo koda pa da vidimo gde gresim...



Code:
@IDSko bigint,
@IDSkoGod int,
@IDUce bigint,
@PocSkoGod datetime,
@ZavPrvPoGo datetime

as

SELECT     SUM(dbo.tIzostanci.BroCasIzo) AS BrIzo, dbo.tIzostanci.ID_Ucenik, dbo.tPodUce.ID_Ucenik AS Expr1, dbo.tIzostanci.ID_SkoGod, 
                      dbo.tIzostanci.ID_Skola, dbo.tPodUce.Ime, dbo.tPodUce.Prezime, dbo.tSkoGod.ID_SkoGod AS Expr2, dbo.tSkoGod.PocSkoGod, 
                      dbo.tSkoGod.KrajPrvogPG, dbo.tIzostanci.DatIzo
FROM         dbo.tPodUce INNER JOIN
                      dbo.tIzostanci ON dbo.tPodUce.ID_Ucenik = dbo.tIzostanci.ID_Ucenik INNER JOIN
                      dbo.tSkoGod ON dbo.tIzostanci.ID_SkoGod = dbo.tSkoGod.ID_SkoGod
GROUP BY dbo.tIzostanci.DatIzo, dbo.tIzostanci.ID_Ucenik, dbo.tPodUce.ID_Ucenik,
 dbo.tIzostanci.ID_SkoGod, dbo.tIzostanci.ID_Skola, dbo.tPodUce.Ime, 
                      dbo.tPodUce.Prezime, dbo.tSkoGod.ID_SkoGod, dbo.tSkoGod.PocSkoGod, 
                     dbo.tSkoGod.KrajPrvogPG
HAVING      (dbo.tIzostanci.ID_Skola = @IDSko) AND (dbo.tPodUce.ID_Ucenik =@IDUce) AND 
(dbo.tSkoGod.ID_SkoGod = @IDSkoGod) AND (dbo.tIzostanci.DatIzo >  
                      @PocSkoGod) AND (dbo.tIzostanci.DatIzo < @ZavPrvPoGo)



Obratite paznju na HAVING i znakove poredjenja (><),pogotovu u delu gde poredim opseg datuma i rezultat u osnovu na taj opseg. Dobijam rezultat ali ne onaj koji mi je potreban, izgleda obracunava nesto ali ne kontam sta. Posto mu saljem iz klijenta format datum i to onaj njegov DEFAULT a to je MM/dd/yyyy....
Da li uopste moze da se porede datetime typovi kao int i bigint


Izvinjavam se zbog nazgrapnog koda!! ;-)
[ goranvuc @ 22.07.2007. 11:48 ] @
Pa npr. mozes koristiti Convert funkciju:
Code:

...
... AND (dbo.tIzostanci.DatIzo < CONVERT(DATETIME, @ZavPrvPoGo, 101))

gde si trebao da taj parametar predvidis kao varchar tip, a ne datetime, pa kao string da ga prosledis tvojoj proceduri.
[ borcha @ 22.07.2007. 11:56 ] @
aaaa, ja sam bosanac pa malo koci znas.....!! Da stringgg.. Bas sam gledao covert valute ova 101 je American! A moze bilo koji stil na pr. 103 oce li ga SQL S. prihvatiti...?
[ goranvuc @ 22.07.2007. 11:58 ] @
Kako ga posaljes - tako ce ga prihvatiti Onaj treci parametar zato i postoji, da CONVERT funkcija zna gde je sta - bukvalno receno.

Inace 103 ti je "dd/mm/yy"
[ borcha @ 22.07.2007. 12:02 ] @
E, hvala ... napatio sam se ko isus!
[ borcha @ 22.07.2007. 13:23 ] @
e ono je super, izbacuje mi sve Od tog pocetnog datuma do zavrsnog datuma ali po datumima za taj opseg.
Znaci ako je pocetni datum 1-sep-2006 zavrsni datum 1-dec2006 lista mi stavke pojedinacno po svakom datumu koji se nadje u tom opsegu.
Mene interesuje zasto nece da mi zbroji stavke npr. broj casova izostanka po datumima u postavljenom opsegu? evo koda:

Code:
SELECT DISTINCT 
                      dbo.tIzostanci.DatIzo AS Expr2, dbo.tIzostanci.ID_Ucenik, dbo.tIzostanci.ID_Skola, dbo.tIzostanci.ID_SkoGod, dbo.tIzostanci.DatIzo AS Expr3, 
                      SUM(dbo.tIzostanci.BroCasIzo) AS brIzo, dbo.tIzostanci.BroCasIzo, dbo.tPodUce.ID_Ucenik AS Expr1, dbo.tPodUce.Prezime, dbo.tPodUce.Ime, 
                      dbo.tIzostanci.DatIzo
FROM         dbo.tPodUce INNER JOIN
                      dbo.tIzostanci ON dbo.tPodUce.ID_Ucenik = dbo.tIzostanci.ID_Ucenik
GROUP BY dbo.tIzostanci.ID_Ucenik, dbo.tIzostanci.ID_Skola, dbo.tIzostanci.ID_SkoGod, dbo.tIzostanci.BroCasIzo, dbo.tPodUce.ID_Ucenik, 
                      dbo.tPodUce.Prezime, dbo.tPodUce.Ime, dbo.tIzostanci.DatIzo
HAVING      (dbo.tIzostanci.DatIzo > CONVERT(DATETIME, '2006-9-1', 101)) AND (dbo.tIzostanci.ID_Skola = 1) AND (dbo.tIzostanci.ID_SkoGod = 1) AND 
                      (dbo.tIzostanci.DatIzo < CONVERT(DATETIME, '2006-12-1 00:00:00', 101)) AND (dbo.tPodUce.ID_Ucenik = 2)



Izvinjavam se zbog koda!!
[ goranvuc @ 22.07.2007. 14:56 ] @
Ako dobro vidim, zato sto ono sto sumiras imas i u SELECT delu, tj. GROUP - ako nesto sumiras, onda ne mozes po tom istom polju i da grupises, tj. mozes, ali nema smisla ;)
Ovako treba:
Code:

SELECT DISTINCT 
                      dbo.tIzostanci.DatIzo AS Expr2, dbo.tIzostanci.ID_Ucenik, dbo.tIzostanci.ID_Skola, dbo.tIzostanci.ID_SkoGod, dbo.tIzostanci.DatIzo AS Expr3, 
                      SUM(dbo.tIzostanci.BroCasIzo) AS brIzo, dbo.tPodUce.ID_Ucenik AS Expr1, dbo.tPodUce.Prezime, dbo.tPodUce.Ime, 
                      dbo.tIzostanci.DatIzo
FROM         dbo.tPodUce INNER JOIN
                      dbo.tIzostanci ON dbo.tPodUce.ID_Ucenik = dbo.tIzostanci.ID_Ucenik
GROUP BY dbo.tIzostanci.ID_Ucenik, dbo.tIzostanci.ID_Skola, dbo.tIzostanci.ID_SkoGod, dbo.tPodUce.ID_Ucenik, 
                      dbo.tPodUce.Prezime, dbo.tPodUce.Ime, dbo.tIzostanci.DatIzo
HAVING      (dbo.tIzostanci.DatIzo > CONVERT(DATETIME, '2006-9-1', 101)) AND (dbo.tIzostanci.ID_Skola = 1) AND (dbo.tIzostanci.ID_SkoGod = 1) AND 
                      (dbo.tIzostanci.DatIzo < CONVERT(DATETIME, '2006-12-1 00:00:00', 101)) AND (dbo.tPodUce.ID_Ucenik = 2)


Imas tu jos neka polja viska, ali ona "ne kvare".
[ borcha @ 22.07.2007. 15:04 ] @
Probao sam sa ovim prepravljenim kodom. Nece... Oped grupise po datumu..ne sumira!
[ goranvuc @ 22.07.2007. 15:11 ] @
Izvini, nisam procitao detaljno tvoj problem zato sto mi je odmah "izbilo oci" ovo prethodno, ali sam ti u sustini i dao odgovor: Ono po cemu ne zelis da se grupise moras izbaciti iz SELECT i GROUP BY dela upita, a posto ti ovde treba samo suma, onda ti i ne treba GROUP BY deo, kao ni HAVING vec umesto nje moze i WHERE, tako da bi to bilo:
Code:

SELECT SUM(dbo.tIzostanci.BroCasIzo) AS brIzo 
FROM         dbo.tPodUce INNER JOIN
                      dbo.tIzostanci ON dbo.tPodUce.ID_Ucenik = dbo.tIzostanci.ID_Ucenik
WHERE      (dbo.tIzostanci.DatIzo > CONVERT(DATETIME, '2006-9-1', 101)) AND (dbo.tIzostanci.ID_Skola = 1) AND (dbo.tIzostanci.ID_SkoGod = 1) AND 
                      (dbo.tIzostanci.DatIzo < CONVERT(DATETIME, '2006-12-1 00:00:00', 101)) AND (dbo.tPodUce.ID_Ucenik = 2)

[ borcha @ 22.07.2007. 15:20 ] @
Hvala, hvala to je to..radi
[ priki @ 10.08.2007. 12:39 ] @
postavi CONVERT(DATETIME, '2006-9-1', 104))

to je za naš format datuma
[ Teks @ 19.08.2007. 11:56 ] @
Za moj ukus imaš previše uslova u upitu za početak
Polni sa nekim jednostavnijom modelom pa ga "do teši" da radi šta ti treba
Svaki korak proveravaj da vidiš da li si na dobrom putu