我有一个这样的表来保存体检的结果以及发送报告的日期和结果。实际上,发送的日期是基于临床访问日期。客户可以拥有一个或多个报告(日期可能有所不同)
---------------------------------------
| client_id | date_sent | result |
---------------------------------------
| 1 | 2001 | A |
| 1 | 2002 | B |
| 2 | 2002 | D |
| 3 | 2001 | A |
| 3 | 2003 | C |
| 3 | 2005 | E |
| 4 | 2002 | D |
| 4 | 2004 | E |
| 5 | 2004 | B |
---------------------------------------
我想从上述数据中提取以下报告。
---------------------------------------------------
| client_id | result1 | result2 | resut3 |
---------------------------------------------------
| 1 | A | B | |
| 2 | D | | |
| 3 | A | C | E |
| 4 | D | E | |
| 5 | B | | |
---------------------------------------------------
我正在研究Postgresql。“交叉表”功能在这里无法使用,因为每个客户端的“ date_sent”不一致。
任何人都可以粗略地提出一个应如何查询的想法吗?
我建议采用以下方法:
SELECT client_id, array_agg(result) AS results
FROM labresults
GROUP BY client_id;
它的输出格式不完全相同,但是它将为您提供更快,更干净的相同信息。
如果要将结果放在单独的列中,则始终可以执行以下操作:
SELECT client_id,
results[1] AS result1,
results[2] AS result2,
results[3] AS result3
FROM
(
SELECT client_id, array_agg(result) AS results
FROM labresults
GROUP BY client_id
) AS r
ORDER BY client_id;
尽管这显然会引入可能结果的硬编码数量。
我有一个表,在列中包含以下值: 表(col1, col2, col3, col4, col5, col6): 因此,我希望有一行: 怎么做?
问题内容: 这个问题的标题不准确,但我不知道如何总结。如果可以的话,请随时重新编写! 这是两个表的摘录: 桌子 桌子 我需要合并这些表以获得此输出: 我找不到正确的查询。我需要下面类似的内容(我知道它不能完成工作),但是如何将所有代码和年份合并到一个表中,因为代码和年份在两个表中都没有重复… 以下是用于快速创建上述表的SQL脚本: 问题答案: 宇很可能是在寻找对
问题内容: 这个问题已经在这里有了答案 : 9年前关闭。 可能的重复项: 在MS SQL Server 2005中模拟group_concat MySQL函数? SQL Server中的Concat组 我正在尝试编写将行合并在一起的SQL查询。我需要它通过ID#将未指定数量的行组合在一起,但将它们的地址连接起来,例如说成一个单元格。 说我们有 我想得到 每个ID的地址数量可以变化。一些ID具有1,
问题内容: 我有这样一张桌子: 而且我想选择连续的合并行。假设我有(简化)的资料,例如: 我想知道是否可以选择格式如下的行: 编辑: 这是SQLfiddle 我正在使用9.3版的Postgresql! 谢谢! 问题答案: 这是解决此问题的一种方法。创建确定是否一个纪录做了标志 不 重叠的前一个。这是一个小组的开始。然后取该标志的累积总和并将其用于分组: 这是一个SQL Fiddle。
问题内容: 如何将其写成一行? 用id和class选择html标签的方法是什么? 问题答案: 您所要做的就是用逗号分隔它们,例如
问题内容: 使用运算符将产生以下结果: 我希望能够实现以下结果(对于操作员来说只是一个占位符): 因此,您可以看到顶级键的子值已“合并”,使得结果包含和。 如何在Postgres中“深度”合并两个 JSONB 值? 如果可能的话,这可能吗? 一个更复杂的测试用例: 原始“合并”并成为对象的另一个测试用例: 问题答案: 您应该合并两个值都使用的未嵌套元素。在不平凡的查询中执行此操作可能会感到不舒服,