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'
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.