12

特定の条件で割引率で商品を並べ替えたい

ORDER BY 
    CASE WHEN @OrderBy = 0
    THEN table.id END ASC,
    CASE WHEN @Orderby = 2
    THEN table.id END ASC,

テーブルに割引列がないので、以下のようなことをしたい

CASE WHEN @OrderBy = 4
THEN (100-((table.price/table.oldprice)*100) as discount END ASC

しかし、それはエラーをスローします - どうすれば割引でソートできますか?

4

3 に答える 3

4

これに似たものが必要なようです

select * from TableName where someCondition >100
  order by
    case when @OrderBy = 'AirlineService'
      then AirlineService END desc,
    case when  @OrderBy = 'SomeMore'
      then  MyOtherColumn  end
GO

カラムがない場合は、それでソートできません。このMicrosoft リンクを読んでください 注意してください - SELECT ステートメントで返される列で使用される並べ替え順序を指定します。それが役に立てば幸い。

于 2013-06-05T10:06:57.230 に答える
3

ORDER BY節では割引を計算しないでください。SELECT

SELECT *, (100-(table.price/table.oldprice))*100 as discount
FROM table

...

ORDER BY 
CASE WHEN @OrderBy = 0
THEN table.id END ASC,
CASE when @orderby=2
THEN table.id END ASC,
CASE WHEN @OrderBy = 4
THEN discount END ASC
于 2013-06-05T10:16:34.997 に答える