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'
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
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
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
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.