繁体   English   中英

在Oracle SQL中按分组

[英]Group by in Oracle SQL

我有很多行,其中包含nameunitamount字段。 这些行可能是

name, unit, amount
========
Some name, A, 100
Some name, B, 300
Another name, A, 400

我想选择所有行,但按名称分组。

单位可以是A或B。我希望输出为:

name, A_amount, B_amount
============
Some name, 100, 300
Another name, 400, 0

因此,根据单位,金额应为A_amount或B_amount。

您需要在基表上进行数据透视操作以实现此结果。

SELECT *
FROM (SELECT name, unit, amount FROM   table1)
PIVOT (amount AS amount FOR (unit) IN ('A' AS a, 'B' AS b))
ORDER BY name;

此查询应该为您工作。 请参考本教程,以了解有关数据透视操作的更多信息。

你可以尝试以下查询

/ 查询1 /

      Select * from #tblsample A
      inner join #tblsample2 B
       On A.ProductId=B.ProductId

/ 查询2 /

        select * from #tblsample
         except
        select * from #tblsample2

/ 查询2的替代方法 /

          select * from #tblsample
          where productid NOT IN(
          select * from #tblsample2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM