2017-03-29 7 views
-2

Ich habe ein Problem mit den Spalten jetzt. Das Ergebnis nehme ich an erwarten so sein:SQL Server - Gruppierung zu einer Spalte

EmployeeID EducationalLoan 
-------------- 
1    0.00 
2    100.00 

aber das Ergebnis zeigt,

EmployeeID EducationalLoan 
-------------- 
1    100.00 
2    100.00 

Was ich erreicht dieser Zeit bin versucht, ist, dass ich nur die Arbeitnehmerdarlehen Abzug Preis auf sehen wollen auf der anderen Seite zeigt es nur 0.00.

Ich weiß, Theres ein kleiner Trick hinter, Kann mir jemand damit helfen?

DECLARE @EmployeeID AS INTEGER 

SET @EmployeeID = 0; 
SELECT DISTINCT 
     [EmployeeID] = emp.EmployeeID, 
     [EducationalLoan] = (SELECT ISNULL(SUM((CAST((lc.LoanAmount/((dbo.fnNumberOfYears(CONVERT(VARCHAR(15), LoanDateStart, 101), CONVERT(VARCHAR(15), LoanPaymentDue, 101)) * 12) * 2)) AS DECIMAL(18,2)))),0) FROM LoanContract lc WHERE lc.LoanTypeID = 1) 
FROM Employee emp 
    INNER JOIN Salary sal ON sal.EmployeeID = emp.EmployeeID 
    INNER JOIN LoanContract lc ON lc.EmployeeID = emp.EmployeeID 
    INNER JOIN LoanType lt ON lt.LoanTypeID = lc.LoanTypeID 
    LEFT JOIN LoanPayments lp ON lp.LoanID = lc.LoanID 
    LEFT JOIN LoanFrequency lf ON lf.LoanFrequencyID = lc.LoanFrequencyID 
WHERE emp.EmployeeID IN (SELECT EmployeeID FROM Employee WHERE EmployeeID LIKE '%' + CASE WHEN ISNULL(@EmployeeID,0) <> 0 THEN CAST(ISNULL(@EmployeeID, 0) AS VARCHAR(15)) ELSE '' END + '%') 
GROUP BY emp.EmployeeID, lt.LoanTypeID 
+0

Bitte bearbeiten Sie Ihre Frage Beispieldaten als DDL + DML aufzunehmen. –

Antwort

2

Sie filtern nicht durch Mitarbeiter in die Unterabfrage

SELECT ISNULL(SUM((CAST((lc.LoanAmount/((dbo.fnNumberOfYears(CONVERT(VARCHAR(15), LoanDateStart, 101), CONVERT(VARCHAR(15), LoanPaymentDue, 101)) * 12) * 2)) AS DECIMAL(18,2)))),0) 
    FROM LoanContract lc 
    WHERE lc.LoanTypeID = 1 

sollte wie folgt sein:

SELECT ... 
    FROM LoanContract lc 
    WHERE lc.LoanTypeID = 1 
    AND lc.EmployeeID = emp.EmployeeID 
+0

@Voltech, Du hast meinen Tag gerettet! Ich danke dir sehr! –