[ neskoli @ 26.06.2010. 23:40 ] @
Iam problem sa zadatkom, koji radim u MSSQL 2005 . Radi se o tome da ja u stvari ne razumem kako da dodjem do broja dana, koji se dobijaju kao razlika izmedju dva datuma. Onda bi ta dva datuma trebao da pomnozim sa troskovima i dobijem ono sto se trazi u zadatku.
Pokusavao sam da do broja dana dodjem tako sto pretvaram podatak tipa DATETIME u 'day(datum)'. TO je sve bilo oki dok nisam dosao do toga da 'datum pocetka tretmana' pocinje u jednom mesecu, a zavrsava se u drugom.

zadatak: Koliki su troskovi lecenja pojednijih bolesnika? (troskovi se dobijaju sumiranjem iznosa koji se dobijaju kao proizvod svako primenjenog tretmana sa brojem dana provedenih na lecenju)

tabele:

CREATE TABLE BOLESNIK(
ZDKNJ int Primary key not NULL,
PREZIME char(50) ,
IME cha(30) ,
FONDOSI int NULL
)


CREATE TABLE BOLNICKI_LIST(
BRBOLI inT PRIMARY KEY NOT NULL NULL,
ZDKNJ int NOT NULL,
DATPOC datetime NULL,
DATZAV datetime NULL,
LEKAR int NULL
)

CREATE TABLE BOLUJE(
BRBOLYI int NOT NULL,
SIFBOL int PRIMARY KEY NULL
)

CREATE TABLE TRETMAN(
BRBOLI int NOT NULL,
SIFBOL int NOT NULL,
SIFTRE int PRIMARY KEY NULL,
DOZA int NULL,
UCEST int NULL,
CENA char(30)
)


Postavio sam i tabele generisane iz querija SQL-a
[ Zoran.Eremija @ 27.06.2010. 09:54 ] @
Pretpostavljam da je model baze sledeci



Ako je tako onda je upit sledeci

SELECT dbo.BOLESNIK.ZDKNJ, dbo.BOLESNIK.PREZIME, dbo.BOLESNIK.IME, dbo.BOLESNIK.FONDOSI, SUM(DATEDIFF(Day, dbo.BOLNICKI_LIST.DATPOC,
dbo.BOLNICKI_LIST.DATZAV) * dbo.TRETMAN.CENA) AS TrosakLecenja
FROM dbo.BOLNICKI_LIST INNER JOIN
dbo.BOLESNIK ON dbo.BOLNICKI_LIST.ZDKNJ = dbo.BOLESNIK.ZDKNJ INNER JOIN
dbo.TRETMAN ON dbo.BOLNICKI_LIST.BRBOLI = dbo.TRETMAN.BRBOLI
GROUP BY dbo.BOLESNIK.ZDKNJ, dbo.BOLESNIK.PREZIME, dbo.BOLESNIK.IME, dbo.BOLESNIK.FONDOSI

a rezultat je sledeci

11 Vukov Pavle 25000 432.4800
13 Bagi Ferenc 24000 40.6000
43 Keca Stojan 21000 888.5400
83 Lazic Dusan 22000 194.7200
[ neskoli @ 27.06.2010. 12:16 ] @
Druze, hvala ti puno. Radi sve oki. Nego, ja nisam imao pojma kako se koristi funkcija DATEDIFF(), pa zato nisam ni znao kako da je upotrebim. znao sam da postoji, ali mi nije na pamet palo da se to sa njom moze odraditi.