根据两个查询的比较计算列
Compute a column based on the comparison of two queries
我正在尝试根据两个查询的比较来计算列。以这两个使用相同 table 的查询为例。唯一的区别是日期。
-Query for Monday
|Balance: 1,000
-Query for Tuesday
|Balance: 900
经过比较,我尝试创建的列应该是这样的(基于这两个查询):
-Column "payment"
|Payment: 100
我该怎么办?
您可以加入两个查询:
SELECT monday_payment - tuesday_payment AS balance
FROM (SELECT payment AS monday_payment
FROM some_table
WHERE some_date = /* monday */) m -- Assume this returns one line
CROSS JOIN (SELECT payment AS tuesday_payment
FROM some_table
WHERE some_date = /* monday */) t -- Assume this returns one line
因为给众所周知的 SQL 猫剥皮的方法有很多种,这里有另一种选择:
select
sum(case
when date = monday then balance
end) - sum(case
when date = tuesday then balance
end)
from table
where date in (monday, tuesday)
我正在尝试根据两个查询的比较来计算列。以这两个使用相同 table 的查询为例。唯一的区别是日期。
-Query for Monday
|Balance: 1,000
-Query for Tuesday
|Balance: 900
经过比较,我尝试创建的列应该是这样的(基于这两个查询):
-Column "payment"
|Payment: 100
我该怎么办?
您可以加入两个查询:
SELECT monday_payment - tuesday_payment AS balance
FROM (SELECT payment AS monday_payment
FROM some_table
WHERE some_date = /* monday */) m -- Assume this returns one line
CROSS JOIN (SELECT payment AS tuesday_payment
FROM some_table
WHERE some_date = /* monday */) t -- Assume this returns one line
因为给众所周知的 SQL 猫剥皮的方法有很多种,这里有另一种选择:
select sum(case when date = monday then balance end) - sum(case when date = tuesday then balance end)
from table
where date in (monday, tuesday)