当前位置: 首页 > 知识库问答 >
问题:

在红移中为同一行元素创建具有不同组名的自定义列

夹谷岳
2023-03-14

我有一张红移的桌子

我正在寻找动态创建一个自定义列,称为group1等组将包含id(1,2,4),group2将包含(1,2,5),预期输出类似。预期输出将是

表样本

我用case语句尝试了下面的查询,但group2没有添加元素1和2,并且只在group1中添加

在(1,2,4)中选择case,然后在(1,2,5)中选择'group1,然后在(1,2,5)中选择'group2',否则id结束,样本组中的和(值)增加1

共有3个答案

漆雕奇
2023-03-14

这有点棘手,因为这些组是重叠的。我建议:

with group_mapping as (
      select 1 as id, 'group1' as grp union all
      select 2 as id, 'group1' as grp union all
      select 4 as id, 'group1' as grp union all
      select 1 as id, 'group2' as grp union all
      select 2 as id, 'group2' as grp union all
      select 5 as id, 'group3' as grp
     )
select coalesce(gm.grp, t.id::text) as grp, sum(value)
from t left join
     group_mapping gm
     on gm.id = t.id
group by coalesce(gm.grp, t.id::text);

注意:如果您有一个包含组映射信息的表,那么为此目的不需要CTE。

如果两组没有重叠,那么另一种方法是通过一个表达式进行聚合。

江敏学
2023-03-14
WITH cte AS (
SELECT
case 
when id in (1,2,4) then 'group1' 
when id in (1,2,5) then 'group2' 
else 'other' end as mygroup,
value
FROM yourTable
)
SELECT mygroup,
sum(value) over (partition by position mygroup order by mygroup) as totalValue
FROM cte
group by mygroup
柴俊捷
2023-03-14
--drop table element_data;
create table element_data(id number(10),name varchar2(10),value number(10));

insert into element_data values(1,'e1',100);
insert into element_data values(2,'e2',200);
insert into element_data values(3,'e3',100);
insert into element_data values(4,'e4',50);
insert into element_data values(1,'e1',100);
insert into element_data values(2,'e2',200);
insert into element_data values(5,'e5',250);
select * from element_data;


select sum(output) from(
select  unique ID,(case when id=1 or id =5 or id=2 then
              sum(value) over(partition by name ) end) output from element_data)
              UNION all
              select sum(output) from(
select  unique ID,(case when id=1 or id =2 or id=4 then
              sum(value) over(partition by name ) end) output from element_data)
              union all
              select sum(output) from(
select  unique ID,(case when id=3 then
              sum(value) over(partition by name ) end) output from element_data)
              ;
 类似资料:
  • 我有下面的xml结构: 有不同的 Field(X) 包装器元素,它们包含相同的用户元素。XML 中可以发送 n 个字段。因此,我不能为每个单独的Jaxb。我需要访问用户,但在取消编组步骤后忽略 Field 元素。不幸的是,我无权更改xml结构。我无法找到解决方案。任何指针都会有所帮助。

  • null 最终产品应该如下所示: 在上面的例子中,@public instance将只有uniqueKey、gtin、printedGtin作为属性。

  • 问题内容: 在Python 的列表中,以下代码给出此输出: 是否存在使用JavaScript中的数组执行此操作的简便方法? 我编写了以下函数来做到这一点,但是有没有更短或更短的东西呢? 问题答案: 您可以这样做: 它在每次迭代中将数组加倍,因此可以创建很少迭代的真正大数组。 注意:您还可以通过使用代替来改善您的功能,因为每次迭代都会创建一个新的数组。像这样(作为一个如何使用数组的示例显示):

  • 有太多关于大致相同主题的问题,但我找不到我想要的。如果我错过了,我很抱歉。 我正在尝试散集具有公共逻辑元素但使用不同标记定义的XML文件: 两个<代码> 我可以这样做: 所需要的只是在和中实现并分别返回或。 然而,在中有一个属性并以某种方式告诉JAXB将这两个字段映射到它似乎更简单。 我是不是想多了?你将如何实现它? (当然,我无法控制输入XML。如果可能的话,我还想避免使用MOXy的解决方案,因

  • 本文向大家介绍aurelia 创建具有可绑定属性的自定义元素,包括了aurelia 创建具有可绑定属性的自定义元素的使用技巧和注意事项,需要的朋友参考一下 示例 创建具有可绑定属性的自定义元素非常简单。如果要创建一个接受一个或多个插件可以使用的值的元素,则需要使用@bindable装饰器和语法。 在下面,我们正在创建一个自定义元素,该元素接受一系列水果并显示它们。 示例: my-element.j

  • 问题内容: 我试图用来创建我的,以确保我的构建/项目的质量。该项目也需要使用和。一切在我的本地计算机上都可以正常运行,但是现在我正在尝试使环境一致,可重现。当我尝试在新的虚拟机中运行时,会中断一个在本机中正常运行但 不在 新vm中运行的。 我检查了版本,,,(其)一切都是一样的。但是,我的Maven项目在此测试中失败了。 我在这里想念什么?任何想法,建议都会受到赞赏,因为我现在还没有想法,到目前为