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

Selecting Max Value, However Prioritising Certain Values

我连接了三个表。 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' where TableB.Column2 = 'KEYVALUE' then show Table.Column2 based off TableC.Column3, however if TableC.Column2 = '0' where TableB.Column2 = 'KEYVALUE' then show result of [TableB].Column2 based off MAX [TableC].Column2

示例数据:

示例输出:

S7000,键值

S6500,OTHERVALUE1

希望大家说得通,谢谢。

我觉得你的条件很难满足,但你似乎想要apply:

Select a.*, bc.column2
From a outer apply
     (select top (1) b.column2
      from c join
           b 
           on c.column3 = b.column3
      where c.column1 = a.column1
      order by (case when c.column2 > 0 and b.column2 = 'KEYVALUE'
                     then 1
                     else 2
                end),
               c.column2 desc
     ) bc;