Agnieszka
Janiak
Analityk Systemów
Biznesowych
Temat: SQL - pomoc w napisaniu zapytania
Witam szanownych kolegów. Czy jako bardzo początkujący użytkownik SQL mogę poprosić o pomoc, bo już nie mogę nic więcej wykombinować a muszę coś zrobić:Mam tabelę
CREATE TABLE dbo.DW_Absencje (
AbsencjaID int NOT NULL,
PracownikID int NOT NULL,
DataOd date NOT NULL,
DataDo date NOT NULL,
PowodAbsencjiID int NOT NULL,
LiczbaDniKalendarz int,
LiczbaDniRob int,
Wiek int,
IloscDzieciDo14lat int,
PRIMARY KEY NONCLUSTERED (AbsencjaID),
FOREIGN KEY (PracownikID) REFERENCES dbo.DW_Pracownicy (PracownikID),
FOREIGN KEY (PowodAbsencjiID) REFERENCES dbo.DW_Z_PowodAbsencji (PowodAbsencjiID))
oraz tabelę
CREATE TABLE dbo.DW_Z_PowodAbsencji (
PowodAbsencjiID int NOT NULL,
PowodAbsencji varchar(30) NOT NULL,
CzyKosztPracodawcy int NOT NULL,
CzyDniRobocze int NOT NULL,
PRIMARY KEY NONCLUSTERED (PowodAbsencjiID))
Podczas wpisywania danych do tabeli DW_Absencje potrzebuję wyliczyć Dni kalendarzowe absencji - ale tylko tych absencji, które w tabeli DW_Z_PowodAbsencji w polu CzyDniRobocze mają wartość 0.
Próbowałam tak:
LiczbaDniKalendarz as DATEDIFF(day, DataOd,DataDo)+1
- działa, ale wtedy wylicza mi dni dla wszystkich absencji. Kombinowanie z warunkami jakoś mi nie wychodzi:
Próba I:
LiczbaDniKalendarz as (case (select CzyDniRobocze from dbo.DW_Z_PowodAbsencji
where dbo.DW_Absencje.PowodAbsencjiID=dbo.DW_Z_PowodAbsencji.PowodAbsencjiID)
when (0) then DATEDIFF(day, DataOd,DataDo)+1 when (1) then 0),
Próba II:
LiczbaDniKalendarz as (if (select P.CzyDniRobocze from DW_Z_PowodAbsencji as P, DW_Absencje as A
where A.PowodAbsencjiID=P.PowodAbsencjiID)=0,
DATEDIFF(day, DataOd,DataDo)+1, 0),
Drugi problem to wyliczenie dni roboczych - dla absencji, które mają być rozliczane wg dni roboczych - tu juz zupełnie brakuje mi pomysłów.
Byłabym bardzo wdzięczna za pomoc