Avatar billede rough Nybegynder
21. marts 2013 - 21:34 Der er 9 kommentarer

SQL Select - case?

Jeg har et SQL script der skal køres

Nedenstående opfylder opgaven - men programmet der skal udføre opgaven, kan kun køre via en Select, hvordan kan jeg omskrive nedenstående til at starte med en select ?

If DATEPART(HOUR, getdate()) BETWEEN 7 AND 18
SELECT * FROM [BI].[dbo].[Monitor] where [Date] = DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) and [Name] = 'Normal'
Else
SELECT * FROM [BI].[dbo].[Monitor] where [Date] = '2013-01-01 00:00:00.000'

Mvh

T
Avatar billede arne_v Ekspert
21. marts 2013 - 21:43 #1
Utestet:

SELECT *
FROM [BI].[dbo].[Monitor]
WHERE CASE WHEN DATEPART(HOUR, getdate()) BETWEEN 7 AND 18 THEN [Date] = DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) AND [Name] = 'Normal' ELSE [Date] = '2013-01-01 00:00:00.000' END
Avatar billede rough Nybegynder
21. marts 2013 - 21:59 #2
Incorrect syntax near '=' :(
Avatar billede arne_v Ekspert
21. marts 2013 - 22:06 #3
hjaelper det at drysse nogle parenteser ud over det?
Avatar billede arne_v Ekspert
21. marts 2013 - 22:07 #4
og det er MS SQLServer??
Avatar billede rough Nybegynder
21. marts 2013 - 22:13 #5
Yes MS Sql

mener du ala

[Date] = (DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)) ? - Det giver same fejl
Avatar billede arne_v Ekspert
21. marts 2013 - 22:28 #6
Mere a la:

SELECT *
FROM [BI].[dbo].[Monitor]
WHERE CASE WHEN DATEPART(HOUR, getdate()) BETWEEN 7 AND 18 THEN (([Date] = DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)) AND ([Name] = 'Normal')) ELSE ([Date] = '2013-01-01 00:00:00.000') END
Avatar billede HenrikSjang Nybegynder
21. marts 2013 - 22:52 #7
Man kan ikke bruge case til at "ændre" på where clausen, men man kan bruge den til at ændre på sammenligningsværdien. Så prøv med dette:

SELECT *
FROM [BI].[dbo].[Monitor]
WHERE
    [Date] = CASE WHEN DATEPART(HOUR, getdate()) BETWEEN 7 AND 18 THEN DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) ELSE '2013-01-01 00:00:00.000' END
    AND [Name] = CASE WHEN DATEPART(HOUR, getdate()) BETWEEN 7 AND 18 THEN 'Normal' ELSE [Name] END
Avatar billede rough Nybegynder
22. marts 2013 - 08:41 #8
You Rock :)

Den sad lige I skabet :)
Avatar billede rough Nybegynder
05. juli 2013 - 10:43 #9
Læg et svar - så får du point :)
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