想显示特定的数据,但是某种程度上数据是重复的

时间:2019-03-25 08:30:08

标签: sql sql-server

我想使用SQL显示具有特定数量数据的特定数据。在这种情况下,它应该只显示5条记录,但它只显示10条记录,它们是相同的数据,我真的不知道问题出在哪里。任何机构都可以帮助解决这个问题?

我刚刚尝试通过运行每个代码来整理代码,但是我认为我在#TEMPAD部分找到了问题

enter image description here

任何人都可以确认我的问题吗?

--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个数据

0 个答案:

没有答案