Неожиданный результат с оператором Case When - PullRequest
1 голос
/ 27 марта 2019

Это случай, когда по моему запросу возвращаются неожиданные результаты.В основном, если финансирование (Sub Subery Case When) меньше 3000, значение должно быть 3000. Это возвращает 0, я знаю, что это кажется глупым вопросом, но я действительно застрял на этом.

Я пытался просто выполнитьзапрос сам по себе, и он по-прежнему возвращает 0. Я также пробовал это без литералов.

SELECT 
Tax + StudentLoans AS 'Net Income Tax',
GrossNI,
CASE WHEN ed.EA_Indicator_CY = '0' THEN '0' ELSE 
(SELECT CASE WHEN SUM(Funding) > '3000' THEN '0' ELSE '3000' END FROM 
PayrollRuns) END AS 'Employment Allowance',
SMP AS 'SMP Recovered',
NICompOnSMP AS 'SMP Comp',
SPPA + SPPB AS 'SPP Recovered',
SPPACompensation + SPPBCompensation AS 'SPP COMP',
SAP AS 'SAP Recovered',
SAPCompensation,
SHPP_A + SHPP_B AS 'Shpp Recovered',
SHPP_A_Compensation + SHPP_B_Compensation AS 'ShPP Comp',
Apprenticeship_Levy_Due AS 'App Levy'
FROM PayrollRuns pr
CROSS JOIN [Employer Details] ed
WHERE RunID = '1058'
GROUP BY Tax, StudentLoans, GrossNI, SMP, NICompOnSMP, ed.EA_Indicator_CY, 
SPPACompensation, SPPBCompensation, SAPCompensation, SHPP_A_Compensation, 
SHPP_B_Compensation, SPPA, SPPB, SAP, Apprenticeship_Levy_Due, SHPP_A, 
SHPP_B

Мой столбец разрешений на трудоустройство для этого примера должен возвращаться как 3000, но он приходит как 0. Любойпомощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 27 марта 2019

Вы должны использовать число, а не строку

SELECT 
    Tax + StudentLoans AS 'Net Income Tax',
    GrossNI,
    CASE WHEN ed.EA_Indicator_CY = 0 THEN 0 ELSE 
    ( CASE WHEN  (SELECT  SUM(Funding) FROM PayrollRuns > 3000 ) THEN 0 ELSE 3000 END )
        END AS 'Employment Allowance',
    SMP AS 'SMP Recovered',
    NICompOnSMP AS 'SMP Comp',
    SPPA + SPPB AS 'SPP Recovered',
    SPPACompensation + SPPBCompensation AS 'SPP COMP',
    SAP AS 'SAP Recovered',
    SAPCompensation,
    SHPP_A + SHPP_B AS 'Shpp Recovered',
    SHPP_A_Compensation + SHPP_B_Compensation AS 'ShPP Comp',
    Apprenticeship_Levy_Due AS 'App Levy'
    FROM PayrollRuns pr
    CROSS JOIN [Employer Details] ed
    WHERE RunID = '1058'
    GROUP BY Tax, StudentLoans, GrossNI, SMP, NICompOnSMP, ed.EA_Indicator_CY, 
    SPPACompensation, SPPBCompensation, SAPCompensation, SHPP_A_Compensation, 
    SHPP_B_Compensation, SPPA, SPPB, SAP, Apprenticeship_Levy_Due, SHPP_A, 
    SHPP_B
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...