Crystal报告,在表格中选择最新的组表

时间:2017-10-10 06:20:32

标签: sql-server crystal-reports

我是Crystal Reports的新手,我有问题,因为我的同事通常做这些东西在家里生病我需要弄清楚自己。我有2张桌子。

首先是这样的:

Article.ID Article.name Article.buyingprice 1 aa 2.00 2 bb 1.00 3 cc 3.50 4 dd 4.20 5 ee 2.00

第二个是这样的:

Income.ID Income.article Income.date Income.number Income.quantity 1 2 79100 P1 2.00 2 1 79100 P1 3.00 3 4 79101 P2 2.00 4 3 79101 P2 1.00 5 1 79101 P2 4.00 6 5 79101 P2 1.00 7 2 79103 P3 15.00

我需要的是从最新的收入文件中选择Income.quantity的公式。例如,对于文章aa,它将是4.00,对于文章bb,它将是15.请保存我的工作伙伴:)

报告按article.name分组。

2 个答案:

答案 0 :(得分:0)

This Can Be Achieved in SQl server by using CTE

BEGIN TRAN

CREATE TABLE #Article (ID INT ,name NVARCHAR(20),buyingprice Decimal (15,2))

CREATE TABLE #Income (ID INT ,article INT,DATE nvarchar(50),number nvarchar(20),quantity Decimal (15,2))

insert into #Article
SELECT 1,'aa',2.00 union all
SELECT 2,'bb',1.00 union all
SELECT 3,'cc',3.50 union all
SELECT 4,'dd',4.20 union all
SELECT 5,'ee',2.00


insert into #Income
select 1,2,'79100','P1',2.00   union all
select 2,1,'79100','P1' ,3.00  union all
select 3,4,'79101','P2',2.00   union all
select 4,3,'79101','P2',1.00  union all
select 5,1,'79101','P2',4.00 union all
select 6,5,'79101','P2',1.00 union all
select 7,2,'79103','P3',15.00

go
with CTE as
    (   select A.ID,name,b.date, B.quantity,ROW_NUMBER() OVER(PARTITION BY  a.ID,name ORDER BY  a.ID,name ) AS Rn
        FROM #Article A inner JOIN #Income B ON A.ID=B.article

    )
SELECT a.ID,a.date,a.name, a.quantity 
FROM CTE a 
WHERE a.Rn= (SELECT MAX(rn) FROM cte b)



ROLLBACK TRAN

答案 1 :(得分:0)

对于您的解决方案,您可以在Crystal报表中创建一个组

  1. 在ArticleId上添加组按升序排序
  2. 通过降序在IncomeId排序中再添加一个组
  3. 现在禁止所有组页眉和页脚
  4. 开放专家,设置下面的公式
  5. 公式:if(previous({Command.Aritcle.ID}) = {Command.Aritcle.ID}) then true else false;