Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sql查询中将所选行聚合为总计_Sql_Oracle - Fatal编程技术网

在sql查询中将所选行聚合为总计

在sql查询中将所选行聚合为总计,sql,oracle,Sql,Oracle,我有一个复杂的查询,它提供如下输出 Name Date Value1 Value2 D 1493803432 12 14 S 1493803424 20 15 T 1493804556 30 12 Y 1493823445 44 13 我想要的输出是将行作为两行或更多行的总和添加到该行中,这里我只给出了两行以重现需要 Name Date Value1 Value2 D 1493803432 12 14

我有一个复杂的查询,它提供如下输出

Name Date       Value1 Value2
D    1493803432  12    14
S    1493803424  20    15
T    1493804556  30    12
Y    1493823445  44    13
我想要的输出是将行作为两行或更多行的总和添加到该行中,这里我只给出了两行以重现需要

Name Date    Value1   Value2
D    1493803432  12    14
S    1493803432  20    15
T    1493803432  30    12
Y    1493803432  44    13
TY   1493803432  74    25

因此,它是两行的总和,其中Name在'T'和'Y'中,并将其添加到与新行相同的输出中,以回答问题的原始版本:

WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
  -- insert your complex query here
)
SELECT LISTAGG( NAME, NULL ) WITHIN GROUP ( ORDER BY NAME ) AS NAME,
       MAX( "Date" ) AS "Date",
       SUM( Value1 ) AS value1,
       SUM( Value2 ) AS value2
FROM   your_complex_query
GROUP BY CASE WHEN name IN ( 'T', 'Y' ) THEN 0 ELSE ROWNUM END;
WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
  -- insert your complex query here
)
SELECT *
FROM   your_complex_query
UNION ALL
SELECT 'TY',
       MAX( "Date" ),
       SUM( Value1 ),
       SUM( Value2 )
FROM   your_complex_query
WHERE  name IN ( 'T', 'Y' );
要回答问题的更新版本,请执行以下操作:

WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
  -- insert your complex query here
)
SELECT LISTAGG( NAME, NULL ) WITHIN GROUP ( ORDER BY NAME ) AS NAME,
       MAX( "Date" ) AS "Date",
       SUM( Value1 ) AS value1,
       SUM( Value2 ) AS value2
FROM   your_complex_query
GROUP BY CASE WHEN name IN ( 'T', 'Y' ) THEN 0 ELSE ROWNUM END;
WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
  -- insert your complex query here
)
SELECT *
FROM   your_complex_query
UNION ALL
SELECT 'TY',
       MAX( "Date" ),
       SUM( Value1 ),
       SUM( Value2 )
FROM   your_complex_query
WHERE  name IN ( 'T', 'Y' );

要回答问题的原始版本,请执行以下操作:

WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
  -- insert your complex query here
)
SELECT LISTAGG( NAME, NULL ) WITHIN GROUP ( ORDER BY NAME ) AS NAME,
       MAX( "Date" ) AS "Date",
       SUM( Value1 ) AS value1,
       SUM( Value2 ) AS value2
FROM   your_complex_query
GROUP BY CASE WHEN name IN ( 'T', 'Y' ) THEN 0 ELSE ROWNUM END;
WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
  -- insert your complex query here
)
SELECT *
FROM   your_complex_query
UNION ALL
SELECT 'TY',
       MAX( "Date" ),
       SUM( Value1 ),
       SUM( Value2 )
FROM   your_complex_query
WHERE  name IN ( 'T', 'Y' );
要回答问题的更新版本,请执行以下操作:

WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
  -- insert your complex query here
)
SELECT LISTAGG( NAME, NULL ) WITHIN GROUP ( ORDER BY NAME ) AS NAME,
       MAX( "Date" ) AS "Date",
       SUM( Value1 ) AS value1,
       SUM( Value2 ) AS value2
FROM   your_complex_query
GROUP BY CASE WHEN name IN ( 'T', 'Y' ) THEN 0 ELSE ROWNUM END;
WITH your_complex_query ( Name, "Date", value1, value2 ) AS (
  -- insert your complex query here
)
SELECT *
FROM   your_complex_query
UNION ALL
SELECT 'TY',
       MAX( "Date" ),
       SUM( Value1 ),
       SUM( Value2 )
FROM   your_complex_query
WHERE  name IN ( 'T', 'Y' );

您决定何时对行求和以及对哪些行求和的逻辑是什么?您将如何决定显示哪个“日期”值?您说您要将其添加为新行,但您似乎也忽略了要求和的原始行。如果您已经在对复杂查询中的值进行求和,为什么不将值“T”和“Y”替换为值“TY”。你的求和会得到一个总的和。我的逻辑是按名称,其中名称在T,Y中,然后它将这两个加起来,并作为行添加到同一行。第1个输出不是这样做的,第1个输出是上面给出的第一个表,但您已经说过,您已经将这两个作为示例,可能不止两个。仅针对这两个问题的答案可能没有帮助。@D14 TY row的日期如何?为什么是
1493804556
?决定何时对行求和以及对哪些行求和的逻辑是什么?您将如何决定显示哪个“日期”值?您说您要将其添加为新行,但您似乎也忽略了要求和的原始行。如果您已经在对复杂查询中的值进行求和,为什么不将值“T”和“Y”替换为值“TY”。你的求和会得到一个总的和。我的逻辑是按名称,其中名称在T,Y中,然后它将这两个加起来,并作为行添加到同一行。第1个输出不是这样做的,第1个输出是上面给出的第一个表,但您已经说过,您已经将这两个作为示例,可能不止两个。仅针对这两个问题的答案可能没有帮助。@D14 TY row的日期如何?为什么是
1493804556
?如果我们需要按时间对聚合进行分组。。如果我们需要按时间对聚合进行分组,需要做什么。。需要做什么