Avatar billede testpilot_dk Nybegynder
06. juli 2007 - 15:09 Der er 6 kommentarer og
1 løsning

Er dette smart, eller kan det gøres smartere

Hej!

  Jeg sidder og skal lave en sammentælling fordelt på den aktuelle bruger og han kan forskellige status med forskellige værdier.

Så ville jeg hører om det er en smart måde at gøre at lave en summering på eller om det kan gøres smartere

declare @Startdate as datetime;
declare @Enddate as datetime;
set @StartDate = '6/1/2007'
Set @EndDate = '7/6/2007'

select distinct (Employee.Name),
    (Select Count(dbo.Log.Info) from dbo.Log where dbo.Log.EmployeeID = Employee.Id and dbo.Log.Date BETWEEN @StartDate AND @EndDate and dbo.Log.Info = 0) as 'LogInfo 0',
    (Select Count(dbo.Log.Info) from dbo.Log where dbo.Log.EmployeeID = Employee.Id and dbo.Log.Date BETWEEN @StartDate AND @EndDate and dbo.Log.Info = 1) as 'LogInfo 1',
    (Select Count(dbo.Log.Info) from dbo.Log where dbo.Log.EmployeeID = Employee.Id and dbo.Log.Date BETWEEN @StartDate AND @EndDate and dbo.Log.Info = 2) as 'LogInfo 2',
    (Select Count(dbo.Log.Info) from dbo.Log where dbo.Log.EmployeeID = Employee.Id and dbo.Log.Date BETWEEN @StartDate AND @EndDate and dbo.Log.Info = 4) as 'LogInfo 4'
from dbo.Log inner join employee on employee.id = dbo.log.employeeID where dbo.Log.Date BETWEEN @StartDate AND @EndDate
Order by 'LogInfo 4' desc
Avatar billede testpilot_dk Nybegynder
06. juli 2007 - 15:15 #1
Den behøver ikke at sortere bagefter, det er bare selve Select sætningen som jeg er i tvivl om
Avatar billede erikjacobsen Ekspert
06. juli 2007 - 15:50 #2
Du kan måske bruge en: ... GROUP BY dbo.Log.Info
Avatar billede testpilot_dk Nybegynder
06. juli 2007 - 16:45 #3
Mit problem er at jeg som standard får følgende output:

ID, name, log.info, log.count
1 , test, 1      , 23
1 , test, 3      , 42

Det ønsker jeg på følgende måde

ID, name, LogInfo1, LogInfo2, LogInfo3
1 , test, 23      , 0      , 42
Avatar billede erikjacobsen Ekspert
06. juli 2007 - 16:54 #4
Jeg foretrækker simple, og effektive, sql-sætninger, og skal det vises på en anden måde (fra "lodret" til "vandret"), så sker det i programmeringssproget, der bruger resultatet fra sql-en.
Avatar billede testpilot_dk Nybegynder
06. juli 2007 - 17:00 #5
jaah, det kan man selvføgelig også gøre!


Send et svar, så vil jeg gøre det som du skriver :)
Avatar billede erikjacobsen Ekspert
06. juli 2007 - 17:09 #6
;) Ok. Men jeg samler slet ikke på point, tak. Svar selv, accepter eget svar.

Fordelen ved "min" metode er selvfølgelig også, at det er meget nemmere når der kommer flere kategorier. Er det gjort godt fra starten, skal man slet ikke lave noget om.
Avatar billede testpilot_dk Nybegynder
06. juli 2007 - 19:08 #7
Det er rigtigt nok!
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