SQL 服务器:视图中值的特殊计算

SQL Server : special calculation for value in a view

我想按如下方式计算列(已计算):

Calculated 值是 Value 的两倍,只要不存在比 Value 更高的 Calculated 值,否则它应该为零。

基本上,列 Calculated 的最大值应该至少是其类别 (Column1) 所有值大小的一半。

我在 SQL 服务器数据库中有一个视图,这对我来说意味着我不能使用 ORDER BY

我的示例值:

CREATE TABLE test_table2020 
(
    Column1 INT,
    Column2 VARCHAR(1),
    Value INT
)

我这样填充它:

INSERT INTO test_table2020 
VALUES  (1, 'A', 10), (1, 'A', 12),
        (1, 'A', 22), (1, 'A', 23),
        (1, 'A', 13), (1, 'A', 24),
        (2, 'B', 15), (3, 'C', 16),
        (3, 'C', 28), (3, 'C', 31),
        (4, 'D', 9) , (4, 'D', 9) 

我认为我可以从这里获得每个不同 Column1 的最大值(计算)。

我真的不知道该怎么做,这将适用于几行的情况。

这将显示不带零的计算值:

SELECT *, value * 2 AS Calculated FROM test_table2020

这是为了计算应该升级到什么价值的东西而不过度。

与 CASE 配合使用的 window 函数会有所帮助

编辑:不清楚 Column2 是否应该嵌入 partition 模式有点模棱两可。

例子

Select *
       ,Calculated =  case when (Value*1.5<max(Value) over (partition by column1) 
                                 and  sum(1) over (partition by column1) > 1 )
                                 or ( avg(value) over (partition by column1) = value   )
                           then Value * 2
                           else 0 end
 From  test_table2020

Returns