public class DeviceData {
private String name;
private List<Metric> up;
private List<Metric> down;
}
public class Metric{
private Long data;
private LocalDateTime timeStamp;
}
-------------------------------------------------------------
data | timestamp | name | trafficType
-------------------------------------------------------------
10 | 2020-10-08 13:10:00 | test1 | down
20 | 2020-10-08 12:15:00 | test1 | up
30 | 2020-10-08 13:10:00 | test2 | down
40 | 2020-10-08 12:15:00 | test2 | up
<resultMap id="trafficData" type="DeviceData" autoMapping="true">
<id property="name" column="name" jdbcType="VARCHAR"/>
<collection property="upload" ofType="Metric" autoMapping="true">
</collection>
</resultMap>
尝试实现此JSON响应:
[
{
"name": "test1",
"down": [
{
"data": 10,
"timeStamp": "2020-10-08 13:10:00"
}
],
"up": [
{
"data": 20,
"timeStamp": "2020-10-08 12:15:00"
}
]
},
{
"name": "test2,
"down": [
{
"data": 30,
"timeStamp": "2020-10-08 13:10:00"
}
],
"up": [
{
"data": 40,
"timeStamp": "2020-10-08 12:15:00"
}
]
}
]
欣赏任何想法/语法,谢谢!
可能无法将单个列的结果分成两个列表。
要获得您想要的结果,您需要分离结果集中的数据。
这有点冗长,但您可以使用case
表达式,例如。
select
name,
case traffic_type
when 'up' then ts
else null
end as up_timeStamp,
case traffic_type
when 'up' then data
else null
end as up_data,
case traffic_type
when 'down' then ts
else null
end as down_timeStamp,
case traffic_type
when 'down' then data
else null
end as down_data
from device_data
使用问题中的示例数据,结果如下所示。
+-------+-----------------------------+----------+-----------------------------+------------+
| NAME | UP_TIMESTAMP | UP_DATA | DOWN_TIMESTAMP | DOWN_DATA |
+-------+-----------------------------+----------+-----------------------------+------------+
| test1 | null | null | 2020-10-08 13:10:00.000000 | 10 |
| test1 | 2020-10-08 12:15:00.000000 | 20 | null | null |
| test2 | null | null | 2020-10-08 13:10:00.000000 | 30 |
| test2 | 2020-10-08 12:15:00.000000 | 40 | null | null |
+-------+-----------------------------+----------+-----------------------------+------------+
<resultMap id="trafficData" type="test.DeviceData">
<id property="name" column="name" />
<collection property="up"
resultMap="metric" columnPrefix="up_" />
<collection property="down"
resultMap="metric" columnPrefix="down_" />
</resultMap>
<resultMap id="metric" type="test.Metric">
<id property="timeStamp" column="timeStamp" />
<result property="data" column="data" />
</resultMap>
问题内容: 1个 结果集 : 2个 结果集2: 有没有办法可以做到这一点: 我想在RHEL 5上使用Sybase 12.5的解决方案,我也想知道在其他任何数据库系统中是否可行。 -–谢谢您的回答- 问题答案: 通过为该列使用CASE / WHEN并基于true / false求和1或0,您可以在同一查询中获得这两者。此外,如果您希望将另一个值的总和作为另一个,则可以执行相同的操作列…只需将其替换为
问题内容: 我正在使用PHP和PDO从数据库检索一组值,然后使用以下代码按第一列进行分组: 这意味着如果我的数据采用以下格式: 它返回为: 我将如何按Column1和Column2分组,这样我会得到以下信息: 可以结合使用PDO常数吗? 谢谢 问题答案: 如您所见,通过将数组与一个指定的列进行分组,可以轻松地轻松重建数组。您需要将二维数组(数据库的结果)转换为三维数组,但是 无法 以这种方式重建它
问题内容: 查询1: 查询2: 我想将两个结果合并为两列,其中缺少一列=查询2-查询1以加快处理速度。我该怎么做?示例: 我有两个结果: // ----------------------------------------查询:1 1 2 3 4 // --------------------------------------查询:2 4 5 6 8 // ------------------
问题内容: 我有一个这样的表: 我想将连续序列号分组为一行,如下所示: 请帮助实现此结果。 问题答案:
我获得的结果集有时包含属性的负值,需要将其替换为0。 是否可以使用ad-hoc查询替换这些值,或者我需要在从我的JPA方法获得结果集后替换它们?
有几种不同方法可以生成查询结果: 结果数组 结果行 自定义结果对象 结果辅助方法 Class Reference 结果数组 result() 方法 该方法以**对象数组**形式返回查询结果,如果查询失败返回**空数组**。 一般情况下,你会像下面这样在一个 foreach 循环中使用它: $query = $this->db->query("YOUR QUERY"); foreach ($que