我尝试使用最早的日期,即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]
答案 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'