2016-06-24 16 views
1

我有一個SQL查詢,目前顯示這些結果:SQL查詢 - 爲了通過前兩個字母在列

Product ID Vendor Site Location 
----------------------------------------------- 
ANTIFOAM 51 CHEMICAL COMPANY MANUFACTURING SITE 
ANTIFOAM 51 CHEMICAL COMPANY MANUFACTURING SITE 
ANTIFOAM 51 CHEMICAL COMPANY HQ HQ-FOOD 
ACID 509 CSPA MANUFACTURING SITE 
ACID 509 CSPA HQ HQ-FOOD 
ACID 509 NORTH MANUFACTURING SITE 
ACID 509 NORTH HQ HQ-FOOD 

我需要由總部在第一線,然後訂購生產現場。

任何幫助,非常感謝!

因此,它應該是這樣的:

Product ID Vendor Site Location 
---------------------------------------- 
ANTIFOAM 51 CHEMICAL COMPANY HQ HQ-FOOD 
ANTIFOAM 51 CHEMICAL COMPANY MANUFACTURING SITE 
ANTIFOAM 51 CHEMICAL COMPANY MANUFACTURING SITE 
ACID 509 CSPA HQ HQ-FOOD 
ACID 509 CSPA MANUFACTURING SITE 
ACID 509 NORTH HQ HQ-FOOD 
ACID 509 NORTH MANUFACTURING SITE 
+3

您正在使用什麼數據庫管理系統? –

回答

2

「HQ」成爲了EN-US區域設置「MA」之前,所以假設「HQ-FOOD」和「製造基地」是僅有的兩個值在列,你可以只使用默認的排序順序:

select * from table order by ID, SiteLocation, Vendor 
+0

這不會給所需的輸出。才下訂單有之前與'ID'所有非'HQ-FOOD'記錄相同'ID'所有'HQ-FOOD'記錄,不考慮供應商。 – bgoldst

0

在PostgreSQL:

select * from t1 
order by 
    id, 
    regexp_replace(vendor,'\s+HQ$',''), 
    case when site_location='HQ-FOOD' then 1 else 2 end 
; 

output

regexp_replace()的文檔見here


測試夾具

drop table if exists t1; 
create table t1 (product text, id int, vendor text, site_location text); 
insert into t1 (product,id,vendor,site_location) values 
    ('ANTIFOAM',51,'CHEMICAL COMPANY','MANUFACTURING SITE'), 
    ('ANTIFOAM',51,'CHEMICAL COMPANY','MANUFACTURING SITE'), 
    ('ANTIFOAM',51,'CHEMICAL COMPANY HQ','HQ-FOOD'), 
    ('ACID',509,'CSPA ','MANUFACTURING SITE'), 
    ('ACID',509,'CSPA HQ','HQ-FOOD'), 
    ('ACID',509,'NORTH','MANUFACTURING SITE'), 
    ('ACID',509,'NORTH HQ','HQ-FOOD') 
; 
0

你可以看到我的代碼(在SQL Server):

create table #t2 (product varchar(100), id int, vendor varchar(100), site_location varchar(100)); 
insert into #t2 (product,id,vendor,site_location) values 
    ('ANTIFOAM',51,'CHEMICAL COMPANY','MANUFACTURING SITE'), 
    ('ANTIFOAM',51,'CHEMICAL COMPANY','MANUFACTURING SITE'), 
    ('ANTIFOAM',51,'CHEMICAL COMPANY HQ','HQ-FOOD'), 
    ('ACID',509,'CSPA ','MANUFACTURING SITE'), 
    ('ACID',509,'CSPA HQ','HQ-FOOD'), 
    ('ACID',509,'NORTH','MANUFACTURING SITE'), 
    ('ACID',509,'NORTH HQ','HQ-FOOD') 

select product,id,vendor,site_location 
from #t2 
order by vendor desc 

drop table #t2 

輸出:

ACID 509 NORTH HQ HQ-FOOD 
ACID 509 NORTH MANUFACTURING SITE 
ACID 509 CSPA HQ HQ-FOOD 
ACID 509 CSPA MANUFACTURING SITE 
ANTIFOAM 51 CHEMICAL COMPANY HQ HQ-FOOD 
ANTIFOAM 51 CHEMICAL COMPANY MANUFACTURING SITE 
ANTIFOAM 51 CHEMICAL COMPANY MANUFACTURING SITE