簡體   English   中英

按特定順序排列的列

[英]Ordering column in specific order

我有一條選擇聲明:

 SELECT DISTINCT LOCATIONTYPE 
 FROM DLOCATION 
 WHERE BinCheckedOut = 'N' 
   AND submitted = 'Y' 
   AND BINNUM > 0 
   AND DISPOSED = 'N';

它獲取所有LOCATIONTYPE的顯示列表。 所有可能的LOCATIONTYPE是:

LOCATIONTYPE
----------------------------------------------
Forage (Represents bin 0 - 999)
International (Represents bin 1000 - 1999)
LongTermRetains (Represents bin 2000 - 2999)
Monitoring (Represents bin 3000 - 3999)
Projects (Represents bin 4000 - 4999)
RawMaterial (Represents bin 5000 - 5999)

但是,我希望按箱號以不同的順序列出它們。 是否可以order by binnum而不選擇二進制數來執行此操作? 是否有更好的方式來操縱order by如下所示按特定順序列出它們?

RawMaterial
Forage  
International
LongTermRetains
Monitoring
Projects

您可以使用CASE語句執行自定義有序列表:

SELECT DISTINCT LOCATIONTYPE FROM DLOCATION WHERE BinCheckedOut = 'N' AND
submitted = 'Y' and BINNUM > 0 and DISPOSED = 'N'
ORDER BY 
    CASE 
        WHEN LOCATIONTYPE = 'rawmaterial' THEN 0 
        WHEN LOCATIONTYPE = 'Forage' THEN 1 
        WHEN LOCATIONTYPE = 'International' THEN 2 
        WHEN LOCATIONTYPE = 'LongTermRetains' THEN 3 
        WHEN LOCATIONTYPE = 'Monitoring' THEN 4 
        WHEN LOCATIONTYPE = 'Projects' THEN 5 
    END ASC

我建議使用GROUP BY和更簡單的ORDER BY

SELECT LOCATIONTYPE
FROM DLOCATION
WHERE BinCheckedOut = 'N' and submitted = 'Y' and
      BINNUM > 0 and DISPOSED = 'N'
GROUP BY LOCATIONTYPE
ORDER BY MIN(BINNUM);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM