有关CREATE TABLE结果的填充和布局的问题

时间:2019-04-25 14:40:56

标签: sql select create-table

这是一个非常简单的问题,但是我很少进行编程,因此我不确定我应该尝试研究哪种术语。本质上,我正在尝试执行SQL查询以通过CREATE TABLE返回结果。

我有一个仅包含两个字段的数据库:车辆型号和年份。例如,它列出了2010-2019年协议,2015-2019年思域和2017-2019年飞行员(共18条记录)。

我想要一个简单的表,该表创建所有年份的列(在这种情况下为2010年到2019年),并为所有模型(Accords,Civics,Pilots)创建行。在这种情况下,它将是一个10列3行的表。根据是否有该单元格的匹配记录,需要用“是”或“否”填充它。

因此,在Accord旁边的所有单元格中都会有一个“是”。但是,“试点”单元格中“ 2010-2016年”列将为“否”;其余的为“是”。

有人可以指出我可以在哪里进行自我教育吗?

非常感谢, 约翰

1 个答案:

答案 0 :(得分:0)

您可以使用cross join生成行,并使用left join生成所需的结果。所以:

select m.model, y.year,
       (case when t.model is not null then 'Y' else 'N' end) as flag
from (select distinct model from t) m cross join
     (select distinct year from t) y left join
     t
     on t.model = m.model and t.year = y.year;

注意:这是假设您关心的所有模型和所有年份都在表中。