首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server中的自定义排序

SQL Server中的自定义排序
EN

Stack Overflow用户
提问于 2020-06-18 09:30:45
回答 2查看 31关注 0票数 0

我必须对数据进行排序,并且我希望根据Ship to the country列对数据进行排序。

代码语言:javascript
复制
Waybill #       Fob Code Order Type               Ship To Country
-----------------------------------------------------------------
PEN00070420     FCA POE  SGS-541                  DE    
SPM-SCRAP       FCA POE  SGS-541                  SG    
DIM027-055239   FCA POE  SGS-541                  SG    
DIM027-055085   FCA POE  SGS-541                  HK    
DIM027-054845   FCA POE  SGS-541                  HK    
F722954503      FCA POE  USO-821                  US    
ATKDGFHKG0163   FCA POE  SGS-541                  US    
PEN452450420    FCA POE  SGS-541                  DE

我需要这个数据集作为我的结果:

代码语言:javascript
复制
Waybill #       Fob Code Order Type               Ship To Country
-----------------------------------------------------------------
PEN00070420     FCA POE  SGS-541                  DE    
DIM027-055085   FCA POE  SGS-541                  HK    
SPM-SCRAP       FCA POE  SGS-541                  SG    
F722954503      FCA POE  USO-821                  US    
PEN452450420    FCA POE  SGS-541                  DE    
DIM027-054845   FCA POE  SGS-541                  HK    
DIM027-055239   FCA POE  SGS-541                  SG    
ATKDGFHKG0163   FCA POE  SGS-541                  US

在这里,DESGHKUS都在重复,而且一直在重复。如何在SQL Server中执行这种排序?

EN

回答 2

Stack Overflow用户

发布于 2020-06-18 09:36:56

您可以使用row_number()

代码语言:javascript
复制
order by row_number() over (partition by shipto order by waybill),
         shipto
票数 0
EN

Stack Overflow用户

发布于 2020-06-18 12:46:57

你需要点两次。

通过按ShipToCountry分区和按shipTocountry排序来排序一次。现在,您在步骤1的结果中获得了ShipTocountry partitions

  • 的排名,您必须再次根据shipToCountry对它们进行排序,以便按顺序列出排名的国家。

代码语言:javascript
复制
DECLARE @table table(waybill VARCHAR(30),Febcode VARCHAR(30),OrderType VARCHAR(30), ShipTocountry VARCHAR(30))

INSERT INTO @table values

('PEN00070420  ','FCA POE','SGS-541','DE'),    
('SPM-SCRAP    ','FCA POE','SGS-541','SG'),    
('DIM027-055239','FCA POE','SGS-541','SG'),    
('DIM027-055085','FCA POE','SGS-541','HK'),    
('DIM027-054845','FCA POE','SGS-541','HK'),    
('F722954503   ','FCA POE','USO-821','US'),    
('ATKDGFHKG0163','FCA POE','SGS-541','US'),    
('PEN452450420 ','FCA POE','SGS-541','DE');

SELECT Waybill, Febcode, OrderType, ShipTocountry
FROM
(
SELECT Waybill, Febcode, OrderType, ShipTocountry,
ROW_NUMBER() OVER  (PARTITION BY ShipToCountry ORDER BY shipToCountry) as rnk
from @table
) as t
order by rnk,ShipTocountry
代码语言:javascript
复制
+---------------+---------+-----------+---------------+
|    Waybill    | Febcode | OrderType | ShipTocountry |
+---------------+---------+-----------+---------------+
| PEN00070420   | FCA POE | SGS-541   | DE            |
| DIM027-055085 | FCA POE | SGS-541   | HK            |
| SPM-SCRAP     | FCA POE | SGS-541   | SG            |
| F722954503    | FCA POE | USO-821   | US            |
| PEN452450420  | FCA POE | SGS-541   | DE            |
| DIM027-054845 | FCA POE | SGS-541   | HK            |
| DIM027-055239 | FCA POE | SGS-541   | SG            |
| ATKDGFHKG0163 | FCA POE | SGS-541   | US            |
+---------------+---------+-----------+---------------+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62440917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档