Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server中,如何通过两种不同的方式进行卖空排名?_Sql_Sql Server_Ranking_Rank - Fatal编程技术网

在SQL Server中,如何通过两种不同的方式进行卖空排名?

在SQL Server中,如何通过两种不同的方式进行卖空排名?,sql,sql-server,ranking,rank,Sql,Sql Server,Ranking,Rank,我需要做排名,如果值是负数,那么按Asc排序,如果是正数,那么按Desc排序 select Itemcode, isnull(sum(ss.DiscQty * ss.Cost),0) DescCost, RANK()OVER(Partition by Itemcode order by case when isnull(sum(ss.DiscQty * ss.Cost),0) < 0 THEN isnull(sum(ss.DiscrepancyQt

我需要做排名,如果值是负数,那么按Asc排序,如果是正数,那么按Desc排序

select
    Itemcode,
    isnull(sum(ss.DiscQty * ss.Cost),0) DescCost,
    RANK()OVER(Partition by Itemcode order by 
        case when isnull(sum(ss.DiscQty * ss.Cost),0) < 0 THEN isnull(sum(ss.DiscrepancyQty * ss.Cost),0) END ASC,
        case when isnull(sum(ss.DiscQty * ss.Cost),0) > 0 THEN isnull(sum(ss.DiscQty * ss.Cost),0) END DESC
    ) RANKS
from
    ss
Group by
    ItemNo
但我得到的所有排名都是1

DiscQty<0

当“DiscQty>0时,
Desc订单中的
DiscQty


您需要多个键,如下所示:

RANK() OVER (ORDER BY (CASE WHEN SUM(ss.DiscQty * ss.Cost) < 0 THEN SUM(ss.DiscQty * ss.Cost) ELSE 0 END) ASC,
                      SUM(ss.DiscQty * ss.Cost) DESC
) RANKS
RANK()超过(订单依据(当SUM(ss.DiscQty*ss.Cost)小于0时,则SUM(ss.DiscQty*ss.Cost)否则0结束)ASC,
总额(库存数量*库存成本)说明
)等级
您不需要使用
分区

RANK() OVER (ORDER BY (CASE WHEN SUM(ss.DiscQty * ss.Cost) < 0 THEN SUM(ss.DiscQty * ss.Cost) ELSE 0 END) ASC,
                      SUM(ss.DiscQty * ss.Cost) DESC
) RANKS