社区
Oracle
帖子详情
求一个sql语句
fufan
2005-11-02 10:42:13
单位 产品名称 数量
单位1 产品1 100
单位2 产品1 200
单位3 产品1 300
合计 600
单位1 产品2 210
单位2 产品2 200
合计 410
...
求sql语句,产生以上结果集。 急!
...全文
179
13
打赏
收藏
求一个sql语句
单位 产品名称 数量 单位1 产品1 100 单位2 产品1 200 单位3 产品1 300 合计 600 单位1 产品2 210 单位2 产品2 200 合计 410 ... 求sql语句,产生以上结果集。 急!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
云帆
2005-11-03
打赏
举报
回复
学习了不少,谢谢楼主,也谢谢楼上的兄弟。
沝林
2005-11-03
打赏
举报
回复
这样试试:
SELECT decode(GROUPING(单位), 1, '合计', 单位) 单位,
产品名称,
SUM(数量) 数量,
decode(GROUPING(单位), 1, '产品备注', MAX(产品备注)) 产品备注,
decode(GROUPING(单位), 1, '单价', MAX(单价)) 单价
FROM c
GROUP BY ROLLUP(产品名称, 单位)
HAVING GROUPING(单位) + GROUPING(产品名称) <> 2
沝林
2005-11-02
打赏
举报
回复
不要总计的情况:
SQL> SELECT decode(grouping_id(产品名称, 单位), 1, '合计', 单位) 单位,
2 产品名称,
3 SUM(数量) 数量
4 FROM c
5 GROUP BY ROLLUP(产品名称, 单位)
6 HAVING grouping_id(产品名称, 单位) <> 3
7 /
单位 产品名称 数量
-------------------- -------------------- ----------
单位1 产品1 100
单位2 产品1 200
单位3 产品1 300
合计 产品1 600
单位1 产品2 210
单位2 产品2 200
合计 产品2 410
7 rows selected
沝林
2005-11-02
打赏
举报
回复
SQL> SELECT decode(grouping_id(产品名称, 单位), 1, '合计', 3, '总计', 单位),
2 产品名称,
3 SUM(数量)
4 FROM c
5 GROUP BY ROLLUP(产品名称, 单位)
6 /
DECODE(GROUPING_ID(产品名称,单 产品名称 SUM(数量)
------------------------------ -------------------- ----------
单位1 产品1 100
单位2 产品1 200
单位3 产品1 300
合计 产品1 600
单位1 产品2 210
单位2 产品2 200
合计 产品2 410
总计
qiaozhiwei
2005-11-02
打赏
举报
回复
SELECT A.单位,A.产品,A.数量
FROM
(
SELECT 单位,产品,count(*) AS 数量
FROM TABLE_NAME
GROUP BY 单位,产品
UNION
SELECT '单位X' AS 单位,产品,sum(*) AS 数量
FROM TABLE_NAME
GROUP BY 产品) A
ORDER BY A.产品
fufan
2005-11-02
打赏
举报
回复
单位 产品名称 数量 产品备注 单价
-------------------- -------------------- ----------
单位1 产品1 100 白纸装箱 2.00
单位2 产品1 200 塑料袋装 2.00
单位3 产品1 300 -- 2.10
合计 产品1 600 随便用一个值代替 用一个值代替
单位1 产品2 210 。。 5.00
单位2 产品2 200 。。 5.00
合计 产品2 410 。。 5.00
后面的字段跟排序、计算无关,但同属数据库的一条记录。输出的记录集怎么包含其他无关的字段?
沝林
2005-11-02
打赏
举报
回复
给出你输出报表的格式,我再看看该怎么改……
fufan
2005-11-02
打赏
举报
回复
我的是8i
SELECT decode(GROUPING(单位), 1, '合计', 单位) 单位,
产品名称,
SUM(数量) 数量
FROM c
GROUP BY ROLLUP(产品名称, 单位)
HAVING GROUPING(单位) + GROUPING(产品名称) <> 2
这个没问题。
我还想得到c表的其他相关字段,比如产品规格、单价等字段,在上面的sql语句中如何修改。我搞了好一阵了,搞不出来啊,不知道该在什么地方加进其他对计算,排序没有影响的字段。
沝林
2005-11-02
打赏
举报
回复
如果统计的数据量大并且计算相对复杂,用rollup效率远远高于用union的,union其实做了2次重复的运算,这点看执行计划就可以看出来了
沝林
2005-11-02
打赏
举报
回复
报错应该是不支持grouping_id,要9i才行,可以用grouping 代替,rollup应该从8i开始就开始用了
SELECT decode(GROUPING(单位), 1, '合计', 单位) 单位,
产品名称,
SUM(数量) 数量
FROM c
GROUP BY ROLLUP(产品名称, 单位)
HAVING GROUPING(单位) + GROUPING(产品名称) <> 2
GROUPING(单位)意思是在计算单位合计时标记为1,否则为0,如果这么改还不行,试试不用这个了:
SELECT nvl(单位 '合计') 单位,
产品名称,
SUM(数量) 数量
FROM c
GROUP BY ROLLUP(产品名称, 单位)
zzwind5
2005-11-02
打赏
举报
回复
你的 oracle 什么版本?
fufan
2005-11-02
打赏
举报
回复
谁给讲讲duanzilin(寻) 的sql 的原理?谢谢
fufan
2005-11-02
打赏
举报
回复
用 qiaozhiwei(乔)的sql,弄出来了。
duanzilin(寻) 的sql看不大懂。弄进oracle执行了一下,报错,调试不出来,晕了
谢谢了!!!
SQL语句
基础教程
SQL语句
基础教程
经典
SQL语句
大全(文档)
经典
SQL语句
大全(文档),绝对实用,都是一些常用的语句,可以帮助你很快找到灵感!
SQL语句
培训文档
SQL语句
培训文档
数据库SQL基本语句(半天即可学会,轻松简单)
只要你花半天时间,就能轻松掌握SQL基本语句的使用方式,很好的参考资料,主要看文章中的例子,因为例子具有可读连续性,因此,文档描述非常简单,容易掌握,也较通俗易懂!与大家分享!与大家共享!
SQL语句
集锦
该资料整合了常用的
sql语句
,可以在平时的工作学习中起到指导作用。
Oracle
17,137
社区成员
55,258
社区内容
发帖
与我相关
我的任务
Oracle
Oracle开发相关技术讨论
复制链接
扫一扫
分享
社区描述
Oracle开发相关技术讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章