使用Over Clause计算(Distinct)

时间:2013-12-06 20:12:36

标签: count distinct

我正在寻找一种使用Parition来计算Distinct的方法。

这是我现在拥有的。

Select
     MasterID
     ,TxnCode
     ,TxnDate
     ,PriceDate
     ,Quantity
From
MH
Order By 
TxnCode

我想做的是为每个TxnCode计算不同的PriceDates并将其作为名为PriceChanges的列返回。

我知道你做不了

Count(Distinct PriceDate) Over (Partition by TxnCode) 

但有一种简单的方法吗?

以下是表中总体数据的示例:

ID      TxnCode     PriceDate           PriceCharged
2   1514000 2013-10-01 15:49:00 2.0600
2   1514000 2013-10-01 15:49:00 2.0600
2   1514000 2013-10-01 15:49:00 2.0600
2   1516000 2013-03-13 11:24:00 4.4900
2   1516000 2013-03-13 11:24:00 4.4900
2   1516000 2013-10-01 15:49:00 4.0200
2   1516000 2013-10-01 15:49:00 4.0200
2   22120   2009-05-04 23:27:00 0.1500
2   22120   2009-05-04 23:27:00 0.1500

谢谢,

1 个答案:

答案 0 :(得分:1)

我不确定你要对分区做什么,但是如果我正确地按照你的问题而你想要计算不同的PriceDates你应该能够用一个组而不是使用不同的

Select PriceDate, Count(*) as Count
     MasterID
    ,TxnCode
    ,TxnDate
    ,PriceDate
    ,Quantity
From
MH
Group By PriceDate

这会得到类似的东西:

12/1/2013    2
12/2/2013    1
....