Order By 左连接连接的两列不同的表
Order By for two columns of different tables connected with left join
我有两个 table,一个是 tbl1
,具有三个字段 gadgetid,weight
和 priceperday
。
而第二个 table 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
目前正在使用这些行进行排序
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
如有任何帮助,我们将不胜感激。
试试这个:
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
希望一切顺利。如有问题,评论。
我在你当前的尝试中找不到任何 joins
,但是根据 o/p 你需要添加 coalesce()
函数并进行排序
order by coalesce(promotionalprice, priceperday) desc
我有两个 table,一个是 tbl1
,具有三个字段 gadgetid,weight
和 priceperday
。
而第二个 table 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
目前正在使用这些行进行排序
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
如有任何帮助,我们将不胜感激。
试试这个:
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
希望一切顺利。如有问题,评论。
我在你当前的尝试中找不到任何 joins
,但是根据 o/p 你需要添加 coalesce()
函数并进行排序
order by coalesce(promotionalprice, priceperday) desc