Er der nogen der kan hjælpe med nedenstående SQL query, der fejler ved afvikling. Jeg har en tabel der indholder følgende felter: Id, Dato, opkaldstidspunkt. Jeg har konverteret queryen fra Access hvor den virker..!
SELECT modulusTime, modulusMinut, count(Modulus) FROM (SELECT (CAST((DATENAME(hour,opkaldstidspunkt) * 60 + DATENAME(minute,opkaldstidspunkt)) * 60 + DATENAME(second,opkaldstidspunkt) AS INT) / (5 * 60)) * (5 * 60) AS Modulus, CAST(Modulus / 3600 AS INT) AS modulusTime, CAST((Modulus - modulusTime * 3600) / 60 AS INT) AS modulusMinut FROM statistik_hvd ) AS [%$##@_Alias] GROUP BY modulusTime, modulusMinut, Modulus ORDER BY Modulus
Jeg får denne fejlmeddelelse ved afviklingen: Msg 207, Level 16, State 1, Line 4 Invalid column name 'Modulus'. Msg 207, Level 16, State 1, Line 5 Invalid column name 'Modulus'. Msg 207, Level 16, State 1, Line 5 Invalid column name 'modulusTime'
SELECT modulusTime, modulusMinut, count(Modulus) FROM (SELECT (CAST((DATENAME(hour,opkaldstidspunkt) * 60 + DATENAME(minute,opkaldstidspunkt)) * 60 + DATENAME(second,opkaldstidspunkt) AS INT) / (5 * 60)) * (5 * 60) AS [Modulus], CAST(Modulus / 3600 AS INT) AS [modulusTime], CAST((Modulus - modulusTime * 3600) / 60 AS INT) AS [modulusMinut] FROM statistik_hvd ) AS [%$##@_Alias] GROUP BY modulusTime, modulusMinut, Modulus ORDER BY Modulus
Prøvede det du foreslog, men nu brokker SQL Serveren sig over navnene i linie 1.
Msg 207, Level 16, State 3, Line 1 Invalid column name 'Modulus'. Msg 207, Level 16, State 3, Line 1 Invalid column name 'Modulus'. Msg 207, Level 16, State 3, Line 1 Invalid column name 'modulusTime'.
Jeg har eksperimenteret lidt. Hvis jeg erstatter beregningerne med felter i min tabel Statistik_Hvd, så virker querien (se nedenstående).
SELECT modulusTime, modulusMinut, count(Modulus) FROM (SELECT Dato AS [Modulus], Opkaldstidspunkt AS [modulusTime], KøId AS [modulusMinut] FROM statistik_hvd ) AS [%$##@_Alias] GROUP BY modulusTime, modulusMinut, Modulus ORDER BY Modulus
Nu er jeg vist med. Havde faktisk ikke nærlæst din query. Det er fordi, du forsøger at anvende dit beregnede felt i de efterfølgende felter.
Prøv denne her: SELECT modulusTime, modulusMinut, count(Modulus) FROM ( select CAST(Modulus / 3600 AS INT) AS [modulusTime], CAST((Modulus - modulusTime * 3600) / 60 AS INT) AS [modulusMinut] from ( SELECT (CAST((DATENAME(hour,opkaldstidspunkt) * 60 + DATENAME(minute,opkaldstidspunkt)) * 60 + DATENAME(second,opkaldstidspunkt) AS INT) / (5 * 60)) * (5 * 60) AS [Modulus], FROM statistik_hvd ) A ) AS [%$##@_Alias] GROUP BY modulusTime, modulusMinut, Modulus ORDER BY Modulus
Jeg har lavet en ny subselect, der anvender modulus fra den første subselect. Du kan evt undvære den anden subselect, så bare lave de nye beregninger i din select, men så skal du også lave dem i din group by.
Det er bl.a kommaet i slutningen af linie 6 den ikke kan li' ;) Når jeg fjerner det og afvikler querien, får jeg denne fejlmeddelelse: Msg 207, Level 16, State 3, Line 1 Invalid column name 'modulusTime'. Msg 207, Level 16, State 3, Line 1 Invalid column name 'Modulus'. Msg 207, Level 16, State 3, Line 1 Invalid column name 'Modulus'. Msg 207, Level 16, State 3, Line 1 Invalid column name 'Modulus'.
Har du prøvet, at fjerne det ekstra komma i subselecten efter Modulus. Sådan her:
SELECT modulusTime, modulusMinut, count(Modulus) FROM ( select CAST(Modulus / 3600 AS INT) AS [modulusTime], CAST((Modulus - modulusTime * 3600) / 60 AS INT) AS [modulusMinut] from ( SELECT (CAST((DATENAME(hour,opkaldstidspunkt) * 60 + DATENAME(minute,opkaldstidspunkt)) * 60 + DATENAME(second,opkaldstidspunkt) AS INT) / (5 * 60)) * (5 * 60) AS [Modulus], FROM statistik_hvd ) A ) AS [%$##@_Alias] GROUP BY modulusTime, modulusMinut, Modulus ORDER BY Modulus
SELECT modulusTime, modulusMinut, count(Modulus) FROM ( select CAST(Modulus / 3600 AS INT) AS [modulusTime], CAST((Modulus - modulusTime * 3600) / 60 AS INT) AS [modulusMinut] from ( SELECT (CAST((DATENAME(hour,opkaldstidspunkt) * 60 + DATENAME(minute,opkaldstidspunkt)) * 60 + DATENAME(second,opkaldstidspunkt) AS INT) / (5 * 60)) * (5 * 60) AS [Modulus] FROM statistik_hvd ) A ) AS [%$##@_Alias] GROUP BY modulusTime, modulusMinut, Modulus ORDER BY Modulus
Problemet vi sloges med skyldes at MS SQL Server hverken understøtter indlejrede selects eller reference til alias'er ved definition af nye.
Synes godt om
Ny brugerNybegynder
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.