按列

2017-01-30 44 views
0

中的具體數值排序我有帳單表。現在,我想檢索所有的數據,但有折扣,所以折扣有兩種類型,固定金額和百分比,百分比以十進制形式表示,例如:-0.10爲10%,折扣必須是最後獲得的折扣它由asc命令。對不起,我的英語不好。這裏是我的表:按列

id  | bill_item_id  |  bill_item_amount 
1  | 1     |  1000 
2  | 3     |  -0.12 
3  | 2     |  -100 
4  | 4     |  -0.15 

bill_item_id = 2表示的折扣是固定的,如果是在百分比bill_item_id是任何數字。

預期輸出必須是:

id  |  bill_item_amount 
1  |  1000 
3  |  -100 
4  |  -0.15 
2  |  -0.12 

我的查詢到目前爲止:

SELECT * FROM billing_details order by bill_item_amount < 0 and bill_item_amount > -1 asc 

我的查詢只對百分比折扣檢查,但我要檢查的固定折扣也。該訂單將是正常的項目,固定折扣,百分比折扣升序。

回答

0

試試這個

select 
    id, bill_item_amount 
from 
    billing_details 
order by 
    bill_item_amount desc; 
+0

這不可能爲了固定金額第一,然後百分比。 –

+0

哎呀,我想念這個問題。另一個答案會做。但是,如果沒有適當的分類,在一列中保存兩種不同類型的數據是一個可怕的想法。你的數據應該正常化。誰知道-0.15不是一個真正的金額? –

0

如果我理解正確的話,你需要這樣的:

SELECT *  
FROM billing_details 
ORDER BY 
CASE WHEN bill_item_amount >= 0 bill_item_amount END DESC, 
CASE WHEN bill_item_amount < 0 THEN bill_item_amount END ASC