是否可以总计两列,但是仍然显示所有结果?目前,如果我对select语句中的一列进行求和(例如sum(sales_amount),则只显示1行结果
SALES_ID EMPLOYEE_ID PRODUCT_ID SALES_AMOUNT QUANTITY DATE
1 123148 4578947 80 1 01/01/2018
2 123148 5124578 80 1 01/01/2018
我想保留上面显示的两个结果,但是创建了一个额外的行,在sales_amount下显示总数为160,数量为2。
答案 0 :(得分:1)
这可以说是糟糕的SQL,因为最后一行的语义与其他行的语义不同。 (行和列应该在逻辑上可以互换。)这就是说,正如我写的那样,我看到@ Gordon-Linoff刚刚给出了我要给出的答案。不过,我认为这种聚合应该是分开的。
答案 1 :(得分:0)
在这种情况下,最简单的方法可能是union all
:
select SALES_ID, EMPLOYEE_ID, PRODUCT_ID, SALES_AMOUNT, QUANTITY, DATE
from t
union all
select NULL, NULL, NULL, SUM(sales_amount), sum(quantity), date
from t
group by date;
如果您的数据是汇总查询的结果,则rollup
是合适的。
答案 2 :(得分:0)
选择SALES_ID,EMPLOYEE_ID,PRODUCT_ID,SALES_AMOUNT,QUANTITY,DATE, (SALES_AMOUNT * QUANTITY)总计(您的表名)
如果您使用此查询,则金额将乘以每行的数量并显示在新列中