【发布时间】:2020-12-09 14:08:55
【问题描述】:
我目前正在 MS Access 中运行查询,但使用的是 SQL 而不是“设计窗口”。我仍在学习,因此非常感谢您的帮助。
我有下表(我已对其进行了颜色编码以提供帮助):
我希望基本上对除 CAP_REFERENCE 之外的所有字段执行“分组依据”语句,但只返回一组共享相同 CAP_REFERENCE 值的唯一值(我在这些示例表中对这个分组进行了颜色编码)。
目前,我可以运行以下“分组依据”语句来删除所有字段组合重复的记录。 注意:我知道使用 group by 函数我必须 max() (或类似的)我的 CAP_REFERENCE 所以如果有多个,它只取第一个可能的值。
SELECT FACULTY_CODE, UNIT_CODE, CLASS_CODE, CAPACITY, LOCATION, NEW, max(CAP_REFERENCE)
FROM tbl
GROUP BY FACULTY_CODE, UNIT_CODE, CLASS_CODE, CAPACITY, LOCATION, NEW
我得到:
我能否对两行进行“分组”,以便生成的表格如下所示? (我真正需要的东西):
我考虑过可能将 CAP_REFERENCE 相同的行连接起来,并将它们全部放在一个新表中,然后执行“分组依据”,但我不知道如何再次将所有值分开。我运行这个查询的完整表有 509 条记录,所以我肯定需要标准化这个过程。
我感谢所有想法!
在这里编辑原始表格,这样你们就不必输入了:)
+------+------+-------+-------+---------+------+--------+
| col1 | col2 | col3 | col4 | col5 | col6 | col7 |
+------+------+-------+-------+---------+------+--------+
| 550 | 0 | ALERT | FULL | OUTSIDE | NO | ABC123 |
| 550 | 1 | ALERT | EMPTY | OUTSIDE | NO | ABC123 |
| 550 | 0 | ALERT | FULL | OUTSIDE | NO | ABC456 |
| 550 | 1 | EVENT | EMPTY | OUTSIDE | NO | ABC456 |
| 553 | 0 | ALERT | FULL | OUTSIDE | NO | ABC555 |
| 553 | 1 | EVENT | EMPTY | OUTSIDE | NO | ABC555 |
| 553 | 0 | ALERT | FULL | OUTSIDE | NO | ABC888 |
| 553 | 1 | EVENT | EMPTY | OUTSIDE | NO | ABC888 |
+------+------+-------+-------+---------+------+--------+
编辑 修正样本数据中的错别字,抱歉!
【问题讨论】:
-
你能创建一个小提琴吗,dbfiddle.uk。 (我懒得输入所有数据,而且我不能复制和粘贴,因为您提供的是图像而不是格式化文本。)
-
对真正的 sql server 感兴趣,您可以在其中使用 CTE,但访问有点棘手,您可以做的有点有限。
-
您的示例数据中还有一个错字 - 它们都是 ABC123
-
感谢您指出@TomC 已全部修复