高手请赐教,sql问题

lzl09011 2002-08-30 09:27:05
原始表:
日期 产品名称 部门名称 数量
2000 产品1 部门1 2
2000 产品2 部门1 5
2000 产品1 部门2 8
2001 产品1 部门3 9
2001 产品1 部门1 8
.. ... ...

根据原表生成一个新的表:
合计 部门1 部门2 部门3 ........
合计 (数量) //这个合计的位置可以随意
产品1
产品2
...
...

怎样用sql语句实现?如果一步实现不了可以用多步,只要能实现功能就行。
另外说明一下,部门大概有1000个,产品大概有100个。
...全文
31 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzl09011 2002-09-02
  • 打赏
  • 举报
回复
谁有办法啊?
playyuer 2002-09-02
  • 打赏
  • 举报
回复
iif
lzl09011 2002-09-02
  • 打赏
  • 举报
回复
access,刚才有人说access不支持这种语法,那怎么办啊?怎样解决?
prosectinfo 2002-09-02
  • 打赏
  • 举报
回复
你的数据库是什么?
lzl09011 2002-09-02
  • 打赏
  • 举报
回复
Sum(Case When 部门名称='部门1' then 数量 end)'部门1'
含这个语句执行的时候出现错误信息:‘不支持此接口’。
我用的是access数据库,该怎样解决?
xiachedan 2002-08-30
  • 打赏
  • 举报
回复
课本上的知识足够了!!!
lazywolf 2002-08-30
  • 打赏
  • 举报
回复
sorry,错了点东东,应该是
如果部门少点就可以用下面sql:

select '合计' as 产品名称,sum(a.数量)+sum(b.数量)+sum(c.数量) as 合计,sum(a.数量) as 部门1,sum(b.数量) as 部门2,sum(c.数量) as 部门3 from 原始表 a,原始表 b,原始表 c where a.产品名称=b.产品名称 and a.产品名称=c.产品名称 and a.部门名称='部门1' and b.部门名称='部门2' and c.部门名称='部门3'
union
select a.产品名称 as 产品名称,sum(a.数量)+sum(b.数量)+sum(c.数量) as 合计,sum(a.数量) as 部门1,sum(b.数量) as 部门2,sum(c.数量) as 部门3
from 原始表 a,原始表 b,原始表 c where a.产品名称=b.产品名称 and a.产品名称=c.产品名称 and a.部门名称='部门1' and b.部门名称='部门2' and c.部门名称='部门3' group by a.产品名称 order by 产品名称
lazywolf 2002-08-30
  • 打赏
  • 举报
回复
如果部门少点就可以用下面sql:

select '合计' as 产品名称,sum(a.数量)+sum(b.数量)+sum(c.数量) as 合计,sum(a.数量) as 部门1,sum(b.数量) as 部门2,sum(c.数量) as 部门3 from 原始表 a,原始表 b,原始表 c where a.产品名称=b.产品名称 and a.产品名称=c.产品名称 and a.部门名称='部门1' and b.部门名称='部门2' and c.部门名称='部门3'
union
select a.产品名称 as 产品名称,sum(a.数量)+sum(b.数量)+sum(c.数量) as 合计,sum(a.数量) as 部门1,sum(b.数量) as 部门2,sum(c.数量) as 部门3
from 原始表 a,原始表 b,原始表 c group by a.产品名称 where a.产品名称=b.产品名称 and a.产品名称=c.产品名称 and a.部门名称='部门1' and b.部门名称='部门2' and c.部门名称='部门3' order by 产品名称
playyuer 2002-08-30
  • 打赏
  • 举报
回复
交叉表
lzl09011 2002-08-30
  • 打赏
  • 举报
回复
shuixin13(犬犬(心帆)) :
我不是很明白,可以把源代码写出来么?谢谢!
shuixin13 2002-08-30
  • 打赏
  • 举报
回复


用一个交叉表查询
再UNION
一个GROUP查询
SayForever 2002-08-30
  • 打赏
  • 举报
回复
select 产品名称,Sum(Case When 部门名称='部门1' then 数量 end)'部门1',Sum(Case when 部门名称='部门2' then 数量 end) '部门2' From Table1 Group by 日期,产品名称
union
select count(*)'产品名称',Sum(a.部门1)'部门1',Sum(a.部门2) '部门2'
From (select 产品名称,Sum(Case When 部门名称='部门1' then 数量 end)'部门1',Sum(Case when 部门名称='部门2' then 数量 end) '部门2' From Table1 Group by 日期,产品名称) a
chinage 2002-08-30
  • 打赏
  • 举报
回复
关注
lzl09011 2002-08-30
  • 打赏
  • 举报
回复
能不能先告诉我怎样用外部连接实现好不好?当然,最好还是告诉我怎样多步实现。
cobi 2002-08-30
  • 打赏
  • 举报
回复
如果部门的值少一点的话,可以选择用表的外连接使用一条sql实现,不过现在看来必须使用多步才能实现
ddvboy 2002-08-30
  • 打赏
  • 举报
回复
up
chinage 2002-08-30
  • 打赏
  • 举报
回复
只要能实现功能就行


那实在不行就用最老土的办法吧!
按产品作循环
lzl09011 2002-08-30
  • 打赏
  • 举报
回复
够乎哉?不够也。
可是我的部门很多啊,怎么办啊?分步怎样实现啊?

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧