Avatar billede testpilot_dk Nybegynder
28. juni 2007 - 08:44 Der er 3 kommentarer og
1 løsning

Samle 2 Select sætning i en Stored Procedure

Hej!

  Hvordan kan jeg samle disse 2 SQL sætninger i et samlet resultat, jeg tænker at man måske kan gøre det i en Stored Procedure, men er ikke sikker på at det er smartest.

SELECT
    SUM(CASE WHEN c.Status = 0 THEN 1 ELSE 0 END) AS InActive,
    SUM(CASE WHEN c.Status BETWEEN 1 AND 8 THEN 1 ELSE 0 END) AS Active,
    SUM(CASE WHEN c.Status > 8 THEN 1 ELSE 0 END) AS Prospekt
    FROM CustomerEmployee ce
        INNER JOIN Customer c
        ON ce.CustomerID = c.ID
    WHERE (ce.EmployeeID = @EmployeeID)

SELECT    COUNT(*) AS TotalVisits, COUNT(DISTINCT CustomerID) AS UniqueVisits
FROM        Appointment
WHERE    (EmployeeID = @EmployeeID)

Der skal kun returneres et resultat og ikke 2
Avatar billede fennec Nybegynder
28. juni 2007 - 09:17 #1
Om ikke andet kan det altid laves med et par subselects:

SELECT
    SUM(CASE WHEN c.Status = 0 THEN 1 ELSE 0 END) AS InActive,
    SUM(CASE WHEN c.Status BETWEEN 1 AND 8 THEN 1 ELSE 0 END) AS Active,
    SUM(CASE WHEN c.Status > 8 THEN 1 ELSE 0 END) AS Prospekt,
    (SELECT COUNT(*) FROM Appointment WHERE EmployeeID = @EmployeeID) as TotalVisits,
    (SELECT COUNT(DISTINCT CustomerID) FROM Appointment WHERE EmployeeID = @EmployeeID) as UniqueVisits,
    FROM CustomerEmployee ce
        INNER JOIN Customer c
        ON ce.CustomerID = c.ID
    WHERE (ce.EmployeeID = @EmployeeID)
Avatar billede fennec Nybegynder
28. juni 2007 - 09:18 #2
Der var lige et komma for meget:

SELECT
    SUM(CASE WHEN c.Status = 0 THEN 1 ELSE 0 END) AS InActive,
    SUM(CASE WHEN c.Status BETWEEN 1 AND 8 THEN 1 ELSE 0 END) AS Active,
    SUM(CASE WHEN c.Status > 8 THEN 1 ELSE 0 END) AS Prospekt,
    (SELECT COUNT(*) FROM Appointment WHERE EmployeeID = @EmployeeID) as TotalVisits,
    (SELECT COUNT(DISTINCT CustomerID) FROM Appointment WHERE EmployeeID = @EmployeeID) as UniqueVisits
    FROM CustomerEmployee ce
        INNER JOIN Customer c
        ON ce.CustomerID = c.ID
    WHERE (ce.EmployeeID = @EmployeeID)
Avatar billede testpilot_dk Nybegynder
28. juni 2007 - 09:24 #3
Takker for det hurtige svar, send et svar og du får point
Avatar billede fennec Nybegynder
28. juni 2007 - 09:38 #4
.o) <-- One Eyed Jack
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