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

SQL``转换''查询

宋飞掣
2023-03-14
问题内容

我在表上有这些数据(使用SQL Server 2005):

ID    ParentID    StartTime    EndTime
77    62          08:00:00     11:00:00
78    62          12:00:00     15:00:00
79    62          18:00:00     22:00:00

我想将其转换为:

ParentID  BreakfastStart  BreakfastEnd  LunchStart  LunchEnd  DinnerStart  DinnerEnd
62        08:00:00        11:00:00      12:00:00    15:00:00  18:00:00     22:00:00

现在最困难的部分是:假设我没有其他数据字段指定哪个记录是早餐,午餐或晚餐。我想将它们与最短的开始时间相关联,即,开始时间越短将是早餐,其次就越是午餐,晚餐就越高(假设所有三个(并且只有三个)记录总是被填充)。

有任何想法吗?


问题答案:
WITH    q AS
        (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY parentID ORDER BY StartTime) AS rn
        FROM    mytable
        )
SELECT  qb.ParentID,
        qb.StartTime AS BreakfastStart, qb.EndTime AS BreakfastEnd,
        ql.StartTime AS LunchStart, ql.EndTime AS LunchEnd,
        qd.StartTime AS DinnerStart, qd.EndTime AS DinnerEnd
FROM    q qb
LEFT JOIN
        q ql
ON      ql.parentID = qb.parentID
        AND ql.rn = 2
LEFT JOIN
        q qd
ON      qd.parentID = qb.parentID
        AND qd.rn = 3
WHERE   qb.rn = 1


 类似资料:
  • 问题内容: 我有这个查询,我需要在hql中将其转换,但我有点困惑,不知道如何编写hql中“ where”子句中出现的条件。 什么是hql等效于此sql查询? 问题答案: 请在HQL查询下面找到:假设p_message和p_config是域对象名称,其他是映射到列的属性。

  • 我有两个表,它们通过一个外键来维护它们之间的父子关系。查询如下所示。我想在使用jpa的同时使用标准版。所以有人可以帮助我使用标准版吗 表“child”的“notification\u id\u child”列是外键,并引用表“parent”的主键。

  • 问题内容: 我想将以下SQL查询转换为Elasticsearch之一。谁能帮上忙 我尝试了以下方法: 但不确定我是否做对了,因为它无法验证结果。似乎要在聚合内添加查询。 问题答案: 假设您使用Elasticsearch 2.x,则有可能在Elasticsearch中 具有 -semantics。我不知道2.0之前的可能性。 您可以使用新的Pipeline Aggregation Bucket Se

  • 问题内容: 多亏了Erwin Brandstetter在我之前的问题“具有has_many关系的订单”中的帮助,我的SQL查询才能正常工作。 如何将该SQL转换为ActiveRecords或AREL查询以在范围中使用? 我最近来的是在朋友的帮助下… …这给了我一个错误: 更新: 我之前的问题对相关的架构和查询有完整的描述。但是基本上Articles have_many Metrics和一个Metr

  • 问题内容: 我在SQL Server 2008中具有下表: 我需要创建以下输出的查询: 列可以固定为[Mitarbeiter1]-[Mitarbeiter5],因为每个Filiale的行数不能超过5行。 非常感谢您的帮助! 问题答案: 使用SQL Server 2008,将Pivot和Rank函数组合在一起,可以为每个雇员数量提供理想的结果。首先,我们为每个分支中的每个员工分配一个ID,从每个新分

  • 问题内容: 我正在使用查询从存储为GMT的Oracle DB获取一些应用程序的“接收日期”。现在,我必须在检索时将其转换为东部标准/夏令时。我为此使用以下查询: 它适合标准时间。但是,为了节省夏时制,我们需要根据时区信息将其转换为“ edt”。我不确定如何执行此操作。请帮帮我 问题答案: 您可以使用此查询,而不必担心时区更改。 前任: 美东时间: 美东时间: 更新: 感谢Alex Poole提醒您