我想使用SQL显示具有特定数量数据的特定数据。在这种情况下,它应该只显示5条记录,但它只显示10条记录,它们是相同的数据,我真的不知道问题出在哪里。任何机构都可以帮助解决这个问题?
我刚刚尝试通过运行每个代码来整理代码,但是我认为我在#TEMPAD部分找到了问题
任何人都可以确认我的问题吗?
--IMAGE : https://imgur.com/a/xgX5hub
DECLARE @Month AS INT = 1
DECLARE @Year AS INT = 2019
DECLARE @EmployeeID AS VARCHAR(16) = '01113'
DECLARE @BranchID AS VARCHAR(16) = ''
DECLARE @DepartmentID AS VARCHAR(16) = ''
SELECT * INTO #TEMPJAMINAN FROM(
SELECT A.EmployeeID, SUM(B.Amount) AS JaminanPaid, SUM(A.Amount) AS TotalJaminan
FROM Loan A
INNER JOIN LoanDetail B ON A.LoanID = B.LoanID
WHERE A.EmployeeID = @EmployeeID AND IsPaid = 1 AND LoanTypeID = '017'
GROUP BY A.EmployeeID
)A
SELECT * INTO #TEMPKOPERASI FROM(
SELECT A.EmployeeID, SUM(B.Amount) AS KoperasiPaid, A.Amount AS TotalKoperasi
FROM Loan A
INNER JOIN LoanDetail B ON A.LoanID = B.LoanID
WHERE A.EmployeeID = @EmployeeID AND IsPaid = 1 AND LoanTypeID = '011' AND A.IsDeleted = 0 AND A.Paid = 1
GROUP BY A.EmployeeID, A.Amount
)A
SELECT *, 2 AS SEQ INTO #TEMPAD FROM(
SELECT A.EmployeeID, C.Name AS 'ADName', 'DEDUCTION' AS [Type], B.Amount
FROM Salary A
INNER JOIN SalaryDeduction B ON A.SalaryID = B.SalaryID
INNER JOIN Deduction C ON B.DeductionID = C.DeductionID
WHERE EmployeeID = @EmployeeID AND A.Month = @Month AND A.Year = @Year
UNION ALL
SELECT A.EmployeeID, C.Name AS 'ADName', 'ALLOWANCE' AS [Type], B.Amount
FROM Salary A
INNER JOIN SalaryAllowance B ON A.SalaryID = B.SalaryID
INNER JOIN Allowance C ON B.AllowanceID = C.AllowanceID
WHERE EmployeeID = @EmployeeID AND A.Month = @Month AND A.Year = @Year
UNION ALL
SELECT A.EmployeeID, E.Name AS 'ADName', 'DEDUCTION' AS [Type], SUM(F.Amount) AS Amount
FROM Employee A
INNER JOIN Branch B ON A.BranchID = B.BranchID
INNER JOIN Department C ON A.DepartmentID = C.DepartmentID
INNER JOIN Loan D ON A.EmployeeID = D.EmployeeID
INNER JOIN LoanDetail F ON D.LoanID = F.LoanID AND (MONTH(F.TransDate) = @Month AND YEAR(F.TransDate) = @Year AND IsPaid = 1)
INNER JOIN LoanType E ON D.LoanTypeID = E.LoanTypeID
WHERE A.IsDeleted = 0 AND A.EndWorking IS NULL AND A.EmployeeID = @EmployeeID
GROUP BY A.EmployeeID, E.Name
)A
SELECT
UPPER(C.Name) AS CompanyName,
C.Address1 AS [Address1],
C.Address2 AS [Address1],
@Year AS [Year],
UPPER(CAST(DATENAME(MONTH,DATEADD(MONTH,@Month,-1)) AS VARCHAR(20))) AS [Month],
B.NIK AS NIKKaryawan,
UPPER(B.Name) AS NamaKaryawan,
UPPER(D.Name) AS Title,
UPPER(E.Name) AS Department,
A.HKS AS TotalHKS,
A.HKA AS TotalHKA,
B.AccountBank AS RekeningKaryawan,
B.BankName AS BankKaryawan,
F.JaminanPaid,
F.TotalJaminan,
G.KoperasiPaid,
G.TotalKoperasi,
A.Netto AS TotalGaji,
VE.ADName,
VE.Type,
VE.Amount,
2 AS SEQ
FROM Salary A
INNER JOIN Employee B ON A.EmployeeID = B.EmployeeID
INNER JOIN Company C ON B.CompanyID = C.CompanyID
INNER JOIN Title D ON B.TitleID = D.TitleID
INNER JOIN Department E ON B.DepartmentID = E.DepartmentID
LEFT JOIN #TEMPJAMINAN F ON A.EmployeeID = F.EmployeeID
LEFT JOIN #TEMPKOPERASI G ON A.EmployeeID = G.EmployeeID
LEFT JOIN #TEMPAD VE ON A.EmployeeID = VE.EmployeeID
WHERE A.EmployeeID = @EmployeeID AND A.IsDeleted = 0
UNION ALL
SELECT
UPPER(C.Name) AS CompanyName,
C.Address1 AS [Address1],
C.Address2 AS [Address1],
@Year AS [Year],
UPPER(CAST(DATENAME(MONTH,DATEADD(MONTH,@Month,-1)) AS VARCHAR(20))) AS [Month],
B.NIK AS NIKKaryawan,
UPPER(B.Name) AS NamaKaryawan,
UPPER(D.Name) AS Title,
UPPER(E.Name) AS Department,
A.HKS AS TotalHKS,
A.HKA AS TotalHKA,
B.AccountBank AS RekeningKaryawan,
B.BankName AS BankKaryawan,
F.JaminanPaid,
F.TotalJaminan,
G.KoperasiPaid,
G.TotalKoperasi,
A.Netto AS TotalGaji,
'GAJI POKOK',
'ALLOWANCE',
B.BasicSalary,
1 AS SEQ
FROM Salary A
INNER JOIN Employee B ON A.EmployeeID = B.EmployeeID
INNER JOIN Company C ON B.CompanyID = C.CompanyID
INNER JOIN Title D ON B.TitleID = D.TitleID
INNER JOIN Department E ON B.DepartmentID = E.DepartmentID
LEFT JOIN #TEMPJAMINAN F ON A.EmployeeID = F.EmployeeID
LEFT JOIN #TEMPKOPERASI G ON A.EmployeeID = G.EmployeeID
WHERE A.EmployeeID = @EmployeeID AND A.IsDeleted = 0
AND (B.DepartmentID = @DepartmentID OR @DepartmentID = '')
AND (B.BranchID = @BranchID OR @BranchID = '')
GROUP BY
DROP TABLE #TEMPAD
DROP TABLE #TEMPJAMINAN
DROP TABLE #TEMPKOPERASI
我希望输出5个数据而不是10个数据