我有一个查询,我需要比较同一个表中的2行(不是连续的),其中一个的id必须小于另一个,并且字段的名称必须等于特定的值。 如果我不包括连接,我可以提取数据但是当我尝试加入数据时,我得到'列e1未知'。我假设它与计数有关,但我似乎无法解决它。有什么想法吗?
SELECT
case
when ( extract( HOUR FROM e1.created_at) = 0 ) then '12am'
when ( extract( HOUR FROM e1.created_at) < 12) then concat(extract(HOUR FROM e1.created_at), 'am')
when ( extract( HOUR FROM e1.created_at) = 12) then '12pm'
when ( extract( HOUR FROM e1.created_at) > 12) then concat( ( extract(HOUR FROM e1.created_at) -12 ), 'pm')
end AS "Time",
sum(case when e1.result = “result1" and e2.result =“result2" and e1 < e2 then 1 else 0 end) AS ‘My Result'
from event e1
join event e2 on e2.secondary_id = e1.secondary_id
where e1.started_at > '2018-02-19 00:00:00' and e1.started_at < '2018-02-20 00:00:00'
group by extract(hour from e1.created_at)
答案 0 :(得分:3)
由于TEST
和e1
是表别名,因此e2
表达式不正确:
CASE
您需要指定要比较的e1 < e2
表格中的哪些字段。假设您正在比较时间戳,event
表达式应如下所示:
sum