我正在尝试使用GROUP_BY命令的层次结构创建MySQL查询。 我想在FRUIT& amp; COLOR专栏。
然后,我想创建一个新专栏" New?'查看水果的所有实例的DATE列(从而按FRUIT分组 - 无论颜色如何),并检查该水果的所有实例的Date = 3.6.15。如果这是真的,"是"被分配给该水果的所有行;否则,"否"被分配给该水果的所有行。
我的表目前看起来像这样:
FRUIT COLOR DATE
Apple Red 3.6.15
Apple Green 3.6.15
Pear Yellow 3.2.15
Melon Red 3.6.15
Melon Red 3.2.15
Grapes Purple 3.6.15
Grapes Green 3.4.15
以下是我想要创建的新视图:
FRUIT COLOR NEW?
Apple Red Yes
Apple Green Yes
Pear Yellow No
Melon Red No
Grapes Purple No
Grapes Green No
如何帮助我实现这一目标将不胜感激。
答案 0 :(得分:0)
您可以在case
语句中使用聚合:
select fruit, color,
(case when exists (select 1 from table t2 where t2.color = t.color and date <> '2015-03-06')
then 'no'
else 'yes'
end) as IsNew
from table t;
这只是检查不是当前日期的日期。应存在记录,因为子查询位于同一个表中。
答案 1 :(得分:0)
您可以使用自联接来执行此操作。连接表将为具有多个日期的所有水果返回非空值,case表达式使用它来确定水果是否是新的:
select
t1.FRUIT,
t1.COLOR,
case when t1.date = '3.6.15' and t2.DATE is null
then 'Yes'
else 'No'
end as "New?"
from fruits t1
left join fruits t2 on t1.FRUIT = t2.FRUIT and t1.DATE <> t2.DATE;