如何在SQL Server和Cognos上使用事务日期获取最早的事务量

时间:2015-08-05 13:01:47

标签: sql-server cognos-10

我尝试使用最早的日期,即2010-08-31 13:51:02.000获得此结果2834.0000,但我最终获得所有日期及其相应金额。我只需要一行一列。如何在SQL Server和使用数据项的Cognos Report Studio中执行此操作?

select min([Transaction Date]) [Transaction Date], [GWP Amt] [Amount] from DW.AmountTable
where [Policy Number] = '11EEO7030500'
group by [Transaction Date], [GWP Amt]

enter image description here

2 个答案:

答案 0 :(得分:1)

对于初学者,在GROUP BY子句中丢失[Transaction Date],因为您在SELECT子句中获得Min([Transaction Date])并且没有对其进行分组。

但是如果你只想要一行Min(TransactionDate)和那行的Amount,有几种方法可以解决这个问题,请先试试这个......

SELECT [Transaction Date], Amount
FROM DW.AmountTable
WHERE [Transaction Date] IN (SELECT Min([Transaction Date]) FROM DW.AmountTable)

答案 1 :(得分:1)

这是实现预期结果的另一种方式:

我们使用最小交易日期和政策编号创建数据的子集。然后,我们根据交易日期和政策编号将其加入全套。然后使用where子句来获取有问题的策略。这样做的好处是可以按策略编号进行过滤,而无需在两个地方包含策略。

但是,它假设政策号和交易日期是唯一的。

SELECT A.[Transaction Date], A.[GWP Amt] [Amount] 
FROM DW.AmountTable A
INNER JOIN (SELECT min(transaction date) MTD, [Policy Number]) 
            FROM dw.amountTable 
            GROUP BY [Policy Number]) B
 on B.MTD=A.[Transaction Date]
and A.[Policy Number] = B.[Policy Number]
where A.[Policy Number] = '11EEO7030500'