【发布时间】:2014-06-24 05:58:22
【问题描述】:
假设我有以下 2 个表:
表 A:
CompanyCode
LocationCode
FormNumber
EmployeeNumber
...
表 B:
CompanyCode
LocationCode
FormNumber
EmployeeNumber
ClaimDate
...
使用所有 4 个参数 (CompanyCode,LocationCode,FormNumber,EmployeeNumber) 连接表 A 和表 B。这 4 个参数将作为报告的输入。
A表的一行可以有B表的多行。
在 Crystal Report 中,对于表 A 中的每条记录,我只想要表 B 中具有最早 ClaimDate 的行。
使用 SQL,这可以通过以下方式完成:
SELECT *
FROM TableA a
INNER JOIN TableB b ON
a.CompanyCode = b.CompanyCode AND
a.LocationCode = b.LocationCode AND
a.FormNumber = b.FormNumber AND
a.EmployeeNumber = b.EmployeeNumber
WHERE a.CompanyCode = @CompanyCode AND
a.LocationCode = @LocationCode AND
a.FormNumber = @FormNumber AND
a.EmployeeNumber = @EmployeeNumber AND
b.ClaimDate IN
(SELECT MIN(b.ClaimDate)
FROM TableB b
WHERE b.CompanyCode = @CompanyCode AND
b.LocationCode = @LocationCode AND
b.FormNumber = @FormNumber AND
b.EmployeeNumber = @EmployeeNumber )
但我不太确定如何在 Crystal Report 中做到这一点。我尝试使用 SQL 表达式,但似乎 SQL 表达式无法通过报表输入。
【问题讨论】:
-
报告中的数据应该是什么样子?
-
实际显示的数据不涉及数值。只是后端的计算。报告中有 2 个部分,它将被隐藏/不基于字段值。所以在那个查询中,我会得到另一个字段,将其命名为
Amount,所以它将是最早日期的Amount。然后这个Amount将使用货币表转换为其他值。如果此数量超过某个特定值,它将隐藏一个部分并显示另一个部分。反之亦然。所以我认为以上是解决这个问题的第一步。 -
尝试这样的事情...将数据放在详细信息部分并按照降序排序,然后将
supress写为if recordnumber=1 then false else true..这只是一个想法..不确定是否它会工作..试一试
标签: sql crystal-reports