【问题标题】:Order By for two columns of different tables connected with left join按左连接连接的不同表的两列排序
【发布时间】:2018-05-03 12:09:49
【问题描述】:

我有两张表,一张是tbl1,有三个字段gadgetid,weightpriceperday

虽然第二个表 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


【解决方案1】:

我在您当前的尝试中找不到任何 joins,但根据 o/p,您需要添加 coalesce() 函数并进行排序

order by coalesce(promotionalprice, priceperday) desc

【讨论】:

  • 这似乎是基于发布的有限信息的解决方案。
  • 非常感谢@SeanLange 我昨天尝试了这个解决方案,但遇到了一个错误,而不是搜索该错误我搜索了其他问题,但在您发表评论后,我再次尝试了这个并再次得到解决,谢谢。
【解决方案2】:

试试这个:

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

希望它工作正常。如有问题,请评论。

【讨论】:

  • 获取此异常“找不到列 \"dbo\" 或用户定义的函数或聚合 \"dbo.IFNULL\",或者名称不明确。
  • 我已经在查询中将IFNULL 替换为ISNULL。尝试ISNULL 而不是IFNULL
  • 我也试过了,我贴了我的sp请看一下
  • 等待您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
相关资源
最近更新 更多