我有两个表格tbl1
有三个字段gadgetid,weight
和priceperday
。
第二个表tbl2
包含列promotionsID,gadgetID,promotionalPrice
两者都与左连接相关联意味着一些小工具具有促销价格以及目前仅使用订单仅以价格为单位但现在我想按顺序包括促销价格,例如现在获得结果
gadgetid priceperday promotionalprice
1 32
9 30
11 26 23
6 24
8 21
但是我想要结果如下
gadgetid priceperday promotionalprice
1 32
9 30
6 24
11 26 23
8 21
当前我正在使用这些行进行orderby
Select DT.*
From
( Select
ROW_NUMBER() OVER (ORDER BY
CASE WHEN @SortBy = '1'
THEN (Case when CONVERT(Date, isnull(T.FeaturingStartDate,GETDATE()-1)) <=convert(date,GETDATE())
AND CONVERT(Date, isnull(T.FeaturingEndDate,GETDATE()-1)) >=convert(date,GETDATE()) then 1 else 0 end) END Desc,
CASE WHEN (@SortBy = '2' or @SortBy = '0')
THEN T.PricePerDay END,
CASE WHEN @SortBy = '3'
THEN least(tpf.PromotionalPrice, T.PricePerDay) END DEsc
,T.CreationTimestamp DESC) AS SysSeq
任何帮助将不胜感激。
答案 0 :(得分:3)
我无法在您当前的尝试中找到任何joins
,但根据o / p,您需要添加coalesce()
函数并执行排序
order by coalesce(promotionalprice, priceperday) desc
答案 1 :(得分:1)
试试这个:
SELECT gadgetid,priceperday,promotionalprice
FROM YourTable
ORDER BY CASE WHEN ISNULL(promotionalprice,'')='' THEN priceperday
ELSE
CASE WHEN promotionalprice>priceperday
THEN priceperday
ELSE promotionalprice
END
END
希望它运作正常。如果有任何问题,请发表评论。