我有一个表transaction_transaction
,其中包含列:
id, status, total_amount, date_made, transaction_type
状态可以是:Active, Paid, Trashed, Renewed, Void
所以我想要做的是按日期和状态进行过滤,但由于有时没有Renewed或Trashed的记录,因此我会得到不一致的数据,当按状态分组时,它只返回Active and Paid
(通知{{1} } 不见了 )。我希望它总是像以下一样回归:
Renewed and Trashed
我使用的SQL查询:
-----------------------------------
Active | 121 | 2017-08-09
Paid | 122 | 2017-08-19
Trashed | 123 | 2017-08-20
Renewed | 123 | 2017-08-20
编辑:我创建了一个表sms_admin_status,因为你说它没有表没有错,将来我可能会有新的状态,我也改变了查询以满足我的需求。
答案 0 :(得分:1)
一个可能的解决方案(不是很好)是以下
select statuses.s, date_made, coalesce(SUM(amount), 0)
from (values('active'),('inactive'),('deleted')) statuses(s)
left join transactions t on statuses.s = t.status and
date_made >= '2017-08-08'
group by statuses.s, date_made
我认为您忘记将date_made
添加到group by
。因此,我在那里添加了它。如您所见,可能的值在SQL中是硬编码的。其他一些解决方案(更清洁)是创建一个包含可能的状态值的表并替换我的statuses
。
答案 1 :(得分:0)
使用来自交易表的限制on idle
tell application "Google Chrome"
if it is not running then return 10 -- seconds to wait before repeating
tell window 1 to if it exists then ¬
try
go back active tab
end try
end tell
return 10 -- seconds to wait before repeating
end idle
:
SELECT ... FROM (VALUES)
根据需要添加日期列,我假设它是一个静态值
答案 2 :(得分:0)
多个where语句将限制所选行,除非它们在子查询中。我可以建议以下内容吗?
(function() {
var amount_of_limbs = 4;
MyClass.prototype = /** @lends MyClass# */ {
/**
* Introduce yourself
*/
greet: function(){
alert("Hello, my name is " + this.name + " and I have " + amount_of_limbs + " limbs");
}
};
})();