当前位置: 首页 > 面试题库 >

如何在主表中每条记录仅获得一行?

阳建弼
2023-03-14
问题内容

在多表查询中,每条记录只能获得一行?

我有这三个表:

苹果

ID | APPLE
----------
1  | RED
2  | YELLOW
3  | GREEN

疲劳风险管理系统

ID  | FARM
--------------------
B1  | GEORGE'S FARM
B2  | JOHN'S FARM

FARM_APPLES

FARM  | APPLE
---------------
B1    | 1
B1    | 2
B1    | 3
B2    | 1
B3    | 3

使用此表,我需要以下结果:

FARM_NAME | APPLE_1 | APPLE_2 | APPLE_3
----------------------------------------
B1        | 1       | 2       | 3
B2        |1        |         | 3

非常感谢您的任何帮助,在此先感谢您。

编辑

感谢OMG Ponies和Bill,我将尽力尝试您的两种解决方案,这是最后一件事,它有可能获得以下结果:

FARM          | RED | YELLOW | GREEN
-------------------------------------
GEORGE'S FARM | YES |  YES   |  YES
JOHN's FARM   | YES |  NO    |  YES

问题答案:

Firebird 2.0支持CASE表达式,因此您可以使用:

  SELECT fa.farm AS farm_name,
         MAX(CASE WHEN fa.apple = 1 THEN fa.apple ELSE NULL END AS apple_1,
         MAX(CASE WHEN fa.apple = 2 THEN fa.apple ELSE NULL END AS apple_2,
         MAX(CASE WHEN fa.apple = 3 THEN fa.apple ELSE NULL END AS apple_3,
    FROM FARM_APPLES fa
GROUP BY fa.farm


 类似资料:
  • 问题内容: 如标题所示,我想选择以分组的每组行的第一行和最后一行。 我在此表中包含以下数据: 我需要获取的是列开头的第一个值和列末尾的最后一个值,并按group by group列进行分组。 结果表应如下所示: 我使用和和进行了查询。它可以在SQL Server 2012中使用,但不能在SQL Server 2008中使用。我需要一个可以在SQL Server 2008中执行的查询。 问题答案:

  • 问题内容: 假设我有这样的pandas DataFrame: 我想获得一个新的DataFrame,其中每个ID的前2个记录如下: 我可以对分组依据中的记录进行编号: 但是,有没有更有效/更优雅的方法来做到这一点?还有一种更优雅的方法来对每个组中的数字进行记录(例如SQL窗口函数row_number())。 问题答案: 你试过了吗 Ouput生成: (请记住,根据数据,你可能需要先进行订购/排序)

  • 我有两张桌子叫酒店和描述。描述表包含每个酒店的描述。 在hotels表中,id和city_id一起构成主键(id本身不是主键) 在描述表中,每个酒店最多可以有8种描述类型(一般、位置、房间、外部、愉悦、包含、大堂) 我想使用酒店表和描述表更新主表。对于Hotel表中的每一条记录,我应该在主表中插入一行。当我执行左外部联接时,Hotel表中的每个记录都会产生多个记录,因为一个Hotel有0个或更多的

  • 问题内容: 我有一个包含以下各列的模型: 我有索引和。 现在,我想获取由排序的每个对象的第一个日志。 一种方法是对每个用户名运行以下查询: 但这显然会查询数据库很多次(等于用户名的数量)。有什么方法可以只执行一个数据库查询吗? 问题答案: 另一种情况: 返回每个“第一”条目 的整行。 这种Ruby语法应该可以工作:

  • 我的表格如下: 现在,我需要一个查询,该查询可以为每个至少有一个子记录的记录获取所有可能的子记录,并返回如下数据集:

  • 问题内容: 我需要从数据库获取最新记录。我正在使用sqlalchemy。此刻,我正在那样做: 但是查询太繁琐了。我怎样才能更好地获得最近的记录? 问题答案: 看一看。如果你在右列上指定排序,则第一个将是你的最后一个。一个示例可能如下所示: