根据不同的日期,T sql按2行排序

时间:2015-05-15 08:56:30

标签: sql-server

我有一个名为“客户”的表

客户表格位于以下列

CompanyName varchar(100)    
ProductName varchar(100)    
CreatedDate datetime    
Salesprice money 

我在客户

中有以下数据
CompanyName (column) - ProductName (column)  -  CreatedDate (column) -   Salesprice (column)
A                      B                        2015-01-02 00:00:00.000  419,10      
C                      D                        2014-04-20 00:00:00.000  30,10       
A                      B                        2014-01-02 00:00:00.000  60,00       
C                      D                        2015-04-20 00:00:00.000  540,00     

我想选择如下数据。我需要通过CreatedDate订购,而不是像

那样
CreatedDate 2014

CreatedDate 2015

CreatedDate 2014

CreatedDate 2015

结果必须如下(2014-2015订购)

A                      B                  2014-01-02 00:00:00.000  60,00  (This is 2014)
A                      B                  2015-01-02 00:00:00.000  419,10 (This is 2015)    
C                      D                  2014-04-20 00:00:00.000  30,10  (This is 2014)  
C                      D                  2015-04-20 00:00:00.000  540,00 (This is 2015)

问题:

如何选择客户表

第一个2014年日期比2015年日期(如果存在超过2016年等)如果 CompanyName 相同且 ProductName 相同< / strong>喜欢上面的结果

1 个答案:

答案 0 :(得分:4)

您需要做的是在查询中添加ORDER BY。

SELECT * from customers
ORDER BY CompanyName, ProductName, CreatedDate;

更新:

SELECT  CompanyName, ProductName, CreatedDate, ROW_NUMBER() OVER (PARTITION BY YEAR(CreatedDate) 
                                  ORDER BY YEAR(CreatedDate)) as rownumber
FROM    customers
ORDER by rownumber, YEAR(CreatedDate)