请教如何将查询结果横向显示 在线等待中....(200分)

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

cndsb

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是sqlserver+Delphi Fastreport3.25 请问如何将查询到的结果横向显示
Select * from cost的结果显示在DBGRID中为
燃料 动力 薪酬 办公费 差旅费 ....
10 20 30 40 50
12 14 16 18 19
11 19 18 15 30
我想将查询到的结果在DBGRID(或在FastReportT中)改成这样
燃料 10 12 11
动力 20 14 19
薪酬 30 16 18
办公费40 18 15
差旅费50 19 30
....
 
數據取出來后自己處理下就可以了。
把同類數據串起來
 
如果直接用SQL命令,好像也是可以的,有难度,
用存储过程和游标处理很简单,
如果提取后,在前台处理那效率太低了
 
你先按你的要求做个表格(用d自带的都可以了),然后用在要显示数据的地方用SQL语句实现,我以前做的表格比你的复杂多了,都是这样解决的
 
这个在SQLSERVER中可以用存储过程来解决,刚巧在CSDN上看到个例子,楼主请看:
http://www.80diy.com/home/20041031/16/3508059.html
 
楼上的四位哥们,能不能加我的QQ,我详细请教一下,我的QQ376430458
 
U P.....U P...
 
用含游标的存储过程
 
你在要获取的数据处放一个Query控件,然后用sql命令实现就可以了
 
to HK_ZCP: 表格用STRINGGrid?还是?
 
to aikede
数据全取出来再重新安排的话效率不会低的,因为只要查询出数据后,其他的都在内存中运行了,几乎感觉不出来速度,毕竟字段也不是很多。
 
学习...学习..
 
用d自带的都可以了
 
用delphi自带的报表控件就可以了
 
上班没事做,帮你写了一下呵呵:

create table #tmp(
item varchar(10)
)
insert into #tmp select b.name from sysobjects a inner join syscolumns b on a.id= b.id
where a.name = 'cost'
declare
@field varchar(10),
@i int,
@cost decimal,
@a varchar(2000)
declare fields_cursor cursor for
select b.name from sysobjects a inner join syscolumns b on a.id= b.id
where a.name = 'cost'

open fields_cursor
fetch next from fields_cursor into @field
set @i = 1
while @@fetch_status = 0
begin

if @field <> 'id'
declare cost_cursor cursor for select ''+@field+'' from cost
open cost_cursor
fetch next from cost_cursor into @cost
while @@fetch_status = 0
begin

set @a = cast(@i as varchar)
exec('alter table #tmp add Acolumn'+@a+' varchar(10) ')

exec('update #tmp set Acolumn'+@a+' = cast('''+@cost+''' as decimal) where item = '''+@field+'''')

fetch next from cost_cursor into @cost
end
close cost_cursor
deallocate cost_cursor
set @i = @i+1
fetch next from fields_cursor into @field
end
close fields_cursor
deallocate fields_cursor
drop table #tmp
 
to lisa1002 麻烦你留个联系方式,或者加我QQ可以吗,
 
to lisa1002 我的QQ376430458 EMAIL:sdhhyc@163.com
 
时间长了,结贴了,特别谢谢 LISA1002 希望你联系我,谢谢,我的QQ376430458 EMAIL:sdhhyc@163.com
 
后退
顶部