[英]How to aggregate all columns into array in SQL when using group-by?
给定一个表:
物品 | 越南语 | 成本 | 唯一身份 |
---|---|---|---|
水果 | 小岛 | 10 | abc123 |
水果 | 小岛 | 8个 | 富99 |
水果 | 小岛 | 9 | 富99 |
水果 | 小岛 | 12 | abc123 |
水果 | 小岛 | 14 | abc123 |
蔬菜 | 劳 | 3个 | rr1239 |
蔬菜 | 劳 | 3个 | rr1239 |
通常当它不是 group by 我可以这样做:
SELECT * from mytable
但是如果我使用 group by 对具有相同项目名称的行进行分组,我不能直接这样做:
SELECT
item,
array_agg(vietnamese) as vietnamese
array_agg(cost) as cost
array_agg(unique_id) as unique_id
from mytable
GROUP BY item
是否有自动选择 SQL array_agg(*)
中所有列的选项?
不,没有语法可以执行您描述的操作。 例如, COUNT(*)
并不表示COUNT(a), COUNT(b), COUNT(c), …
,该上下文中的星号并不表示列的扩展。
一般来说,SQL 在元编程方面相当糟糕,即使用运行时信息来修改查询。 您不能 select 全部以“a”开头的列,或者匹配某种模式的表。 SQL 非常 static,除了少数例外,如SELECT *
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.