选择最大值,但优先考虑某些值

时间:2019-04-02 10:46:01

标签: sql sql-server-2008

我有三个连接的表。 TableA具有Column1(ID)的唯一值,该值在具有非唯一值的Column1的TableC上联接。我目前正在基于TableC中Column2的最大值加入这些对象。在TableB中返回一个值,该值只是从TableC中联接出来的。

但是我想对此进行调整,以便如果TableB.Column2在TableC.Column2中具有大于0的任何值,则将其选择为最大值,如果为0,则通常根据数值选择该最大值。

我当前的查询是这样:

Select [TableA].Column2,
       FIRST_VALUE([TableB].Column2) OVER (PARTITION BY [TableA].Column2 ORDER BY MAX([TableC].Column2) Desc)
From [TableC] Left Join
     [TableA]
     On [TableA].Column1 = [TableC].Column1 Left Join
     [TableB]
      On [TableB].Column3 = [Table3].Column3

我希望发生的情况是:

  

TableC.Column2>'0',其中TableB.Column2 ='KEYVALUE'然后基于TableC.Column3显示Table.Column2,但是如果TableC.Column2 ='0',其中TableB.Column2 ='KEYVALUE'然后显示结果[TableB] .Column2基于MAX [TableC] .Column2

样本数据:

arrow function

示例输出:

S7000,KEYVALUE

S6500,OTHERVALUE1

希望这一切都有道理,谢谢。

1 个答案:

答案 0 :(得分:1)

我发现您的条件很难遵循,但是您似乎想要x_labels

apply
相关问题