区别在于SQL Server表现得很奇怪

时间:2017-07-22 10:03:43

标签: sql sql-server partition

我有这个表包含以下数据,我需要它以某种格式

Number  | CustName  | Name  |  QtyCust  | QtyMly
--------+-----------+-------+-----------+------------------    
1       |           | AA    | 5067      |  56
2       |           | BB    |  567      | 455
3       |           | CC    |   12      | 244
4       |           | DD    |   43      |  86
4       | AOAO      | DD    |   45      | 437
5       |           | EE    |  655      | 417
5       | BOBO      | EE    |   45      | 397
6       |           | FF    |  345      | 233
6       | COCO      | FF    |  877      |  43
7       |           | GG    |   67      |  87
8       |           | HH    |  469      |  98

我需要运行distinct或者表格将是这样的东西:

Number  | CustName  | Name  | QtyCust  | QtyMly
--------+-----------+-------+----------+------------
  1     |           | AA    | 5067     |  56
  2     |           | BB    |  567     | 455
  3     |           | CC    |   12     | 244
  4     | AOAO      | DD    |   45     | 437
  5     | BOBO      | EE    |   45     | 397
  6     | COCO      | FF    |  877     |  43
  7     |           | GG    |   67     |  87
  8     |           | HH    |  469     |  98

我尝试使用distinct - 但它不起作用,我得到了相同的结果。

由于

1 个答案:

答案 0 :(得分:2)

您无法使用Distinct执行此操作,它将适用于所有列而不仅仅是一列。您需要Row_Number窗口功能才能执行此操作

select * from 
(
select row_number()over(partition by Name order by  case when CustName <> '' then 1 else 2 end) as rn,*
From yourtable 
) a
Where Rn = 1