Avatar billede paradux Nybegynder
05. maj 2008 - 11:02 Der er 4 kommentarer og
1 løsning

SProc: Beregn Datediff, hvis NOT NULL.

Hej..

Jeg er ikke nogen voldsomt SQL haj, men er dog nødsaget til at brug det selvfølgelig. Jeg har følgende query, som jeg bruger til at udskrive diverse informationer fra et survey-system.

Query'en ser således ud:
SELECT    Survey_Attendees.UserID, Survey_Attendees.AttendeeID AS AttendeeID, Survey_Attendees_1.AttendeeID as RetestAttendeeID,
          Survey_Categories.CategoryName + ' ' + Survey_Tests.Title as TestName, Survey_Attendees.EndDate AS EndDate,
          Survey_Attendees_1.EndDate as RetestEndDate, Survey_Attendees.IsCompleted, Survey_Attendees.IsPassed, Survey_Tests.CategoryID, Profiles.Firstname + ' ' + Profiles.Lastname as FullName,
          Survey_Attendees.FollowUpUserID, Teams.TeamName
FROM        Survey_Attendees LEFT JOIN
                      Profiles ON Survey_Attendees.UserID = Profiles.UserID LEFT JOIN
                      Teams ON Profiles.TeamID = Teams.TeamID LEFT JOIN
                      Survey_Tests as Survey_Tests ON Survey_Attendees.TestID = Survey_Tests.TestID LEFT JOIN
                      Survey_Categories ON Survey_Tests.CategoryID = Survey_Categories.CategoryID LEFT JOIN
                      Survey_Tests AS Survey_Tests_1 ON Survey_Attendees.AttendeeID = Survey_Tests_1.OriginalAttendeeID LEFT JOIN
                      Survey_Attendees AS Survey_Attendees_1 ON Survey_Attendees_1.TestID = Survey_Tests_1.TestID
WHERE (Survey_Attendees.IsRetest = 0) AND (Survey_Attendees.IsOpen = 1)


Mit problem med denne query er at jeg bliver nød til at smide den ind i en sproc, da jeg har behov for en kolonne vi kan kalde "liggetid". Den skal beregne datediff mellem EndDate og GetDate(), MEN, hvis RetestEndDate IKKE er null skal der derimod beregnes datediff mellem RetestEndDate og GetDate().

Nogen der lynhurtigt kan se løsning på dette?

På forhånd tak.
Avatar billede paradux Nybegynder
05. maj 2008 - 11:02 #1
OBS, optimeringer af min query er meget velkomment!
Avatar billede 2c Nybegynder
06. maj 2008 - 14:07 #2
lidt pseudo kode
CASE
WHEN RetestEndDate is not null THEN 'dit sql datadiff'

WHEN RetestEndDate is null THEN 'dit andet datediff'
END as liggetid
Avatar billede 2c Nybegynder
06. maj 2008 - 20:31 #3
Altså, du behøver ikke at smide den ind i en sp. du kan bruge ovenstående pseudkode i din select.

....
Survey_Tests.CategoryID, Profiles.Firstname + ' ' + Profiles.Lastname as FullName,
Survey_Attendees.FollowUpUserID,
Teams.TeamName,
CASE
WHEN RetestEndDate is not null THEN 'dit sql datadiff'

WHEN RetestEndDate is null THEN 'dit andet datediff'
END as liggetid
FROM        Survey_Attendees LEFT JOIN.....
Avatar billede paradux Nybegynder
12. august 2008 - 14:15 #4
Tak for din tid...
Beklager det alt for sene svar. Du smider selvfølgelig bare et svar hvis du vil have point :)
Avatar billede 2c Nybegynder
12. august 2008 - 22:13 #5
Det vil jeg da gerne :-) Kunne du bruge det til noget?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester