应该怎样编写SQL 语句及程序?(100分)

  • 主题发起人 主题发起人 czhysj
  • 开始时间 开始时间
C

czhysj

Unregistered / Unconfirmed
GUEST, unregistred user!
在DELPHI中对SQL SERVER数据表编程时,有如下类型的数据表:

字段: 车间 部门 人数
一车间 A 10
一车间 B 20
二车间 A 30
二车间 B 40
三车间 A 50
三车间 B 60
四车间 A 70
四车间 B 80

请问如果要将上表变成如下格式的表,应该怎样编写SQL 语句及程序?
字段: 部门 一车间 二车间 三车间 四车间
A 10 30 50 70
B 20 40 60 80
 
这个 SQL 属于 Cross Table 查询,但是 SQL Server 好像不支持类似的语法,具体可以
看看这个贴子:<a href="DispQ.asp?LID=392223">复杂的多库查询统计问题,也许也很简单</a>
 
关键是在程序中控制显示格式。
sql语句就用一般的。
select 部门,车间,人数 from yourtable order by 部门,车间
部门 车间 人数
A 一车间 10
A 二车间 30
A 三车间 50
A 四车间 70
.
.
.
.
.
.


 
这种表我一般用连接查询或生成临时表来实现,看看各位高手有没有更好的方法。
 
好像没有,这种结果用一条sql语句搞不定...
 
试一试这个:
SELECT branch,
SUM(CASE shop WHEN '一车间' THEN people ELSE 0 END) AS '一车间',
SUM(CASE shop WHEN '二车间' THEN people ELSE 0 END) AS '二车间',
SUM(CASE shop WHEN '三车间' THEN people ELSE 0 END) AS '三车间',
SUM(CASE shop WHEN '四车间' THEN people ELSE 0 END) AS '四车间'
FROM Test
GROUP BY branch
GO

 
我一般用临时表的。你也可以试一试。
 
做这种查寻access中用交叉表可以轻松搞定。不知d中为什么没有
 
还朱说得对,这是类似access的交叉表,在sql server 中无法解决,
可以用临时表的方法,然后通过程序控制解决。
 
你不要指望各种数据库会提供什么简洁的方法
让你操纵表,许多表必须通过程序控制实现,
为什么?
这些数据库不是中国人开发的,
没有调研具有中国特色社会主义的表,
于是缺少了许多的功能...
 
用两个query可以实现的,问题是查询时间比较长,效率不高。(我实现过)
如果你要我mail你
 
可以借助于临时表,再达到你的目的
 
多人接受答案了。
 

Similar threads

后退
顶部