хочу показать конкретные данные, но как-то данные дублируются чем-то - PullRequest
0 голосов
/ 25 марта 2019

Я хочу показать конкретные данные с определенным количеством данных с использованием 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...