SQL如何使用条件计算子集

SQL如何使用条件计算子集,sql,Sql,我有下表: +--------+------------+----------------+ | saleId | saleDate | contractId | +--------+------------+----------------+ | 1 | 01.07.2016 | 1001 | | 2 | 02.07.2016 | 1001 | | 3 | 03.07.2016 | 1002

我有下表:

+--------+------------+----------------+
| saleId | saleDate   | contractId     |
+--------+------------+----------------+
| 1      | 01.07.2016 | 1001           |
| 2      | 02.07.2016 | 1001           |
| 3      | 03.07.2016 | 1002           |
| 4      | 04.07.2016 | 1002           |
| 5      | 05.07.2016 | 1001           |
| 6      | 06.07.2016 | 1001           |
+--------+------------+----------------+
我想计算每一笔销售(每一行)的Previous销售合同数量


,你的答案总是很简单,很有效率。这对我很有用。这是个好主意!谢谢。你的回答总是非常简单和有效。这对我很有用。这是个好主意!谢谢
+--------+------------+------------+------------------------+
| saleId | saleDate   | contractId | SalesCountPerContract  |
+--------+------------+------------+------------------------+
| 1      | 01.07.2016 | 1001       | 0                      |
| 2      | 02.07.2016 | 1001       | 1                      |
| 3      | 03.07.2016 | 1002       | 0                      |
| 4      | 04.07.2016 | 1002       | 1                      |
| 5      | 05.07.2016 | 1001       | 2                      |
| 6      | 06.07.2016 | 1001       | 3                      |
+--------+------------+------------+------------------------+
select  t.*
       ,row_number() over 
            (partition by contractId order by saleDate) - 1 as SalesCountPerContract  

from    mytable t