如何使用 SQL 服务器和 Cognos 上的交易日期获取最旧交易的金额

How do I get the amount of the oldest transaction using the transaction date on both SQL Server and Cognos

我尝试使用最早的日期 2010-08-31 13:51:02.000 得到这个结果 2834.0000 但我最终得到了所有日期及其相应的数量。我只需要一行和一列。如何在 SQL 服务器和 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]

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

但是,如果您只想要一行包含 Min(TransactionDate) 和该行的金额,有几种方法可以实现,请先尝试这个..

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

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

我们创建了一个包含最小交易日期和保单编号的数据子集。然后,我们根据交易日期和保单编号将其加入到完整集合中。然后使用 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'