【发布时间】:2018-05-03 12:09:49
【问题描述】:
我有两张表,一张是tbl1,有三个字段gadgetid,weight 和priceperday。
虽然第二个表 tbl2 有列 promotionsID,gadgetID,promotionalPrice
两者都与左连接连接意味着一些小工具也有促销价格,目前仅使用 order by 用于 priceperday 但现在我想将促销价格包括在 order by 中,例如现在得到的结果为
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
任何帮助将不胜感激。
【问题讨论】:
-
order by least(promotionalprice, priceperday) desc,或类似的。 -
得到的错误最少不是内置函数
-
使用大小写表达式。
-
@AneeqAzamKhan,你试试我的回答吗?是有帮助还是有什么错误?
-
嗨。这还不清楚。请使用足够的句子来清楚地表达您的意思。请阅读minimal reproducible example 并采取行动。在这种情况下,尤其是“最小”。
标签: sql sql-server database left-join sql-order-by