sql - 实现此 SQL 查询的最简单方法是什么?

标签 sql sql-server

我有一个Excel函数:=Max(0, -Min(A1-B1, C1-B1))

A1、B1、C1 是表中的值列:

日期、键、值

假设现在日期无关紧要,并且 A1、B1、C1 的 key 是 A、B、C

如何实现这个excel函数?我最初的做法是有两个连接(以获取同一行上不同列中的所有值),但这似乎有点矫枉过正,必须有更聪明的方法吗?

最佳答案

您可以将其减少为一个连接,因为您只需要 B 作为 A 部分:

select  case 
        when min(Value - isnull(yt2.Value,0)) > 0 then 0
        else -min(Value - isnull(yt2.Value,0))
        end
from    YourTable yt1
join    YourTable yt2
on      yt1.Key = 'A' and yt2.key = 'B'
        or
        yt1.Key = 'B' and yt2.key = 'C'

关于sql - 实现此 SQL 查询的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10914404/

相关文章:

sql - 带条件的 T-SQL OVER/PARTITION BY 查询

sql - 条件 "email ~* ' link1.com $'"是什么意思?

sql - 在 SQL 中排列值

SQL-SQLite 计算连续数字

sql - SSRS - 日期参数在 WebKit 浏览器中不显示日历控件

sql - 查找不同匹配记录的最快方法

sql - 正确的分区 SQL 索引 + 删除排序的顺序

SQL Server 按顺序分组

sql - 如何获取与 PostgreSQL 中的 View 或表关联的触发器

sql - 在 SQL Server 中提取具有不一致属性和元素的嵌套 XML 数据