【发布时间】:2019-03-27 11:31:02
【问题描述】:
这种情况在我的查询中返回意外结果。基本上,如果资金(Sub Query 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。任何帮助将不胜感激。
【问题讨论】:
-
子查询 SUM(Funding) 的值是多少?
-
@Chanukya SUM(资金)= 0
-
我认为它应该是一个数字而不是一个字符串..
-
我认为这是因为 EA_Indicator_CY 为 0
标签: sql sql-server case