我似乎被一个问题卡住了。我使用Crystal Reports 2008从MS-SQL数据库中提取记录列表。涉及到两个表(它们包含订阅者的订单数据)。第一个表是OrderMst,第二个是OrderDtl。它们由两个字段连接: Account和SubNumber。每个帐号有多个SubNumbers,每个SubNumber有多个InvoiceNumbers。每个发票行都有一列,告诉我它是否是最新的发票。我需要查看此记录以确定客户是活动的、已取消的还是已过期的。然后,根据它们的状态,我需要选择该SubNumber的所有发票。我被困在试图找出一种方法来做到这一点。
下面是一个例子:
OrderMst:
Account SubNumber Pub
72781651 0025 NAVL
72781651 0012 RYIR
72781651 0001 RHCS
80156287 0015 VGFA
80156287 0012 NAVLOrderDtl:
Account SubNumber InvoiceNumber PubStatus RenewalThere
72781651 0025 15894578 A 0
72781651 0025 15754897 R 1
72781651 0025 15753412 R 1
72781651 0012 15753357 C 0
72781651 0012 15749875 R 1
72781651 0001 15465874 X 0
72781651 0001 15425789 R 1
80156287 0015 15656738 A 0
80156287 0012 15387956 C 0
80156287 0012 15324568 R 1因此,如果我要查找活动订阅的所有发票的计数,我将选择{OrderDtl.RenewalThere} = 0,我的报告结果将显示Account 72781651 SubNumber 0025有3张发票,Account 80156287 SubNumber 0015有1张发票。这就是我被卡住的地方。我需要使用一个发票级别记录来告诉我我想要哪个订阅,然后获取该发票的所有发票级别记录。有什么想法吗?
发布于 2011-02-24 14:51:58
你想要的是一个半连接:
SELECT Account, SubNumber, COUNT(*)
FROM OrderDtl
WHERE EXISTS (
SELECT *
FROM OrderDtl AS a
WHERE a.Account = OrderDtl.Account
AND a.SubNumber = OrderDtl.SubNumber
AND a.PubStatus = 'A'
AND a.RenewalThere = 0
)
GROUP BY Account, SubNumberHTH
https://stackoverflow.com/questions/5100291
复制相似问题