表的转换问题

wuhuar 2002-07-07 02:58:26
要将如下的表

地点 品名 销量
-------------------
甲 A 100
甲 B 200
甲 C 130
乙 B 50
乙 D 80
丙 A 200
丙 B 400


形成一个如下的报表:
品名
地点 | A B C D
------------------------------------——
甲 | 100 200 300
乙 | 50 80
丙 | 200 400

用什么办法做最简单?



应怎样做才最省事?


...全文
47 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhuar 2002-07-13
  • 打赏
  • 举报
回复
谢谢,我试了,不可以
Yang_ 2002-07-13
  • 打赏
  • 举报
回复
试一试在SYBASE一下语句可不可以:

select 地点,
sum(case when 品名='A' then 销量 else 0 end) as A,
sum(case when 品名='B' then 销量 else 0 end) as B,
sum(case when 品名='C' then 销量 else 0 end) as C,
sum(case when 品名='D' then 销量 else 0 end) as D
from tablename
grou by 地点

不过结果有点不一样:

品名
地点 | A B C D
------------------------------------——
甲 | 100 200 300 0
乙 | 0 50 0 80
丙 | 200 400 0 0

wuhuar 2002-07-13
  • 打赏
  • 举报
回复
sybase中怎样写,有人知道吗?
wuhuar 2002-07-13
  • 打赏
  • 举报
回复
to Yang_(扬帆破浪)
原来SYBASE可以按case的方法做,我开始试的时候写错了,深表感谢!

顺便说一下,最后的一个方法没用,结果每一行全是一样的。
Yang_ 2002-07-13
  • 打赏
  • 举报
回复
select distinct 地点,
(select sum(销量) from tablename where 品名='A') as A,
(select sum(销量) from tablename where 品名='B') as B,
(select sum(销量) from tablename where 品名='C') as C,
(select sum(销量) from tablename where 品名='D') as D
from tablename
Yang_ 2002-07-09
  • 打赏
  • 举报
回复
w_rose(w_rose)说的是ACCESS的语句,SYBASE应该不可以
Yang_ 2002-07-09
  • 打赏
  • 举报
回复
不是标准语句,适用MS SQL SERVER,SYBASE应该也可以。
wuhuar 2002-07-09
  • 打赏
  • 举报
回复
提前,看还有人回不
gongxiang8118 2002-07-09
  • 打赏
  • 举报
回复
顶楼的兄弟已经定论了,而且很对,大家就不要再忙碌了!!
给顶楼的兄弟鼓掌!(啪--啪--啪--啪)
w_rose 2002-07-08
  • 打赏
  • 举报
回复
transform sum([销量]) select [地点] from 表格 group by [地点] order by [地点] pivot [品名]

这是基本的交叉表查询呀!来点难得。
wuhuar 2002-07-08
  • 打赏
  • 举报
回复
to w_rose(w_rose)
没学过,谢谢!
wuhuar 2002-07-08
  • 打赏
  • 举报
回复
to w_rose(w_rose)
请问这是标准的SQL语句么,我要在SYBASE中使用

wuhuar 2002-07-07
  • 打赏
  • 举报
回复
谢谢 Yang_(扬帆破浪)

各位还有什么高见!
Yang_ 2002-07-07
  • 打赏
  • 举报
回复
sql server :
如果品名有限可知:
select 地点,
Nullif(sum(case when 品名='A' then 销量 else 0 end),0) as A,
Nullif(sum(case when 品名='B' then 销量 else 0 end),0) as B,
Nullif(sum(case when 品名='C' then 销量 else 0 end),0) as C,
Nullif(sum(case when 品名='D' then 销量 else 0 end),0) as D
from tablename
grou by 地点

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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