Crystal Report XI simple如果那么else语句不能正常工作

时间:2012-03-13 14:19:43

标签: crystal-reports

如果“Field_name”小于“Date”,我有一个简单的代码 dieplay'Y'其他'N',我不确定为什么水晶忽略了条件而且似乎只显示了其他部分。即使应该有'Y',我也会得到'N'。有没有其他人遇到过这个问题,请帮助!!!

代码:

(case when ((select Distinct y.szrclin_pidm 
             from szrclin y
             where szrclin_start_date < '01-JAN-2011'
             and y.szrclin_pidm = spriden_pidm ) is not null)
           then 'Y'
           else 'N' 
       end ) "Prior Rotations"

2 个答案:

答案 0 :(得分:0)

您拥有的代码在Crystal Reports的上下文中没有多大意义。我的建议是使用一个简单的公式。

if {szrclin.szrclin_start_date} < date(2011,01,01) and {szrclin.szrclin_pidm} = szrclin.spriden.pidm} then 'Y' else 'N'

如果szrclin表在您的报告中,我认为没有任何理由将SQL表达式用于此类。

答案 1 :(得分:0)

您可能确实在Crystal Reports中嵌入了'原始'SQL:作为SQL表达式字段(返回标量值)或使用Command(返回记录集)。使用一个不允许使用另一个。在这种情况下,我会建议一个SQL表达式。我已经猜到了你想要做什么,但你需要验证它。

(
SELECT count(spriden_pidm)
FROM   szrclin y
WHERE  szrclin_start_date < '01-JAN-2011'
//correlate to 'main' query
AND    y.szrclin_pidm = spriden_pidm
GROUP BY spriden_pidm
)