诚请大家指教:有表table1(name,Mon,Tue,Wed),意义为商人name,在Mon,Tue,Wed仅仅这三天的收入统计,具体数据为:
table1
-------------------------
name Mon Tue Wed
A 11 12 13
B 45 46 78
C 77 87 8
-------------------------
当我在fastreport的MasterData对table1表的数据集进行绑定如如下显示格式后的结果为:
MasterData1
------------------------
day name income
Mon A 11
Tue A 12
Wed A 13Mon B 45
Tue B 46
Wed B 78Mon C 77
Tue C 87
Wed C 8
------------------------
考虑到这样浪费空间,所以我在MasterData中进行了分栏,栏数为3,则显示结果为:
MasterData1
--------------------------------------------------------------------------
day name income day name income day name income
Mon A 11 Mon B 45 Mon C 77
Tue A 12 Tue B 46 Tue C 87
Wed A 13 Wed B 78 Wed C 8
-----------------------------------------------------------------------------
(1) (2) (3)
但是,显然
day
Mon
Tue
Wed
这一列是重复的,我曾经通过脚本进行显示控制:当将要显示的列为(1)列时,则显示day这列数据,当将要显示的列为(2)(3)两列时,则进行隐藏,则效果为:MasterData1
--------------------------------------------------------------------------
day name income 空 name income 空 name income
Mon A 11 空 B 45 空 C 77
Tue A 12 空 B 46 空 C 87
Wed A 13 空 B 78 空 C 8
-----------------------------------------------------------------------------
(4) (5) (6)
但是明显(5)(6)列中,由于对MasterData进行等3份分栏,所以(4)(5)(6)列的宽度都是一样的,就造成了空白列的存在,我的最终效果是想为:
MasterData1
--------------------------------------------------------------------------
day name income name income name income
Mon A 11 B 45 C 77
Tue A 12 B 46 C 87
Wed A 13 B 78 C 8
-----------------------------------------------------------------------------
比较紧凑的显示,没有多余的空余列。
问题叙述有些长,请谅解,谢谢先!!
table1
-------------------------
name Mon Tue Wed
A 11 12 13
B 45 46 78
C 77 87 8
-------------------------
当我在fastreport的MasterData对table1表的数据集进行绑定如如下显示格式后的结果为:
MasterData1
------------------------
day name income
Mon A 11
Tue A 12
Wed A 13Mon B 45
Tue B 46
Wed B 78Mon C 77
Tue C 87
Wed C 8
------------------------
考虑到这样浪费空间,所以我在MasterData中进行了分栏,栏数为3,则显示结果为:
MasterData1
--------------------------------------------------------------------------
day name income day name income day name income
Mon A 11 Mon B 45 Mon C 77
Tue A 12 Tue B 46 Tue C 87
Wed A 13 Wed B 78 Wed C 8
-----------------------------------------------------------------------------
(1) (2) (3)
但是,显然
day
Mon
Tue
Wed
这一列是重复的,我曾经通过脚本进行显示控制:当将要显示的列为(1)列时,则显示day这列数据,当将要显示的列为(2)(3)两列时,则进行隐藏,则效果为:MasterData1
--------------------------------------------------------------------------
day name income 空 name income 空 name income
Mon A 11 空 B 45 空 C 77
Tue A 12 空 B 46 空 C 87
Wed A 13 空 B 78 空 C 8
-----------------------------------------------------------------------------
(4) (5) (6)
但是明显(5)(6)列中,由于对MasterData进行等3份分栏,所以(4)(5)(6)列的宽度都是一样的,就造成了空白列的存在,我的最终效果是想为:
MasterData1
--------------------------------------------------------------------------
day name income name income name income
Mon A 11 B 45 C 77
Tue A 12 B 46 C 87
Wed A 13 B 78 C 8
-----------------------------------------------------------------------------
比较紧凑的显示,没有多余的空余列。
问题叙述有些长,请谅解,谢谢先!!
参考博士的博客
http://blog.csdn.net/liangpei2008/archive/2009/04/26/4124486.aspx
declare @t table([day] varchar(3),[name] varchar(1),[income] int)
insert @t
select 'Mon','A',11 union all
select 'Tue','A',12 union all
select 'Wed','A',13 union all
select 'Mon','B',45 union all
select 'Tue','B',46 union all
select 'Wed','B',78 union all
select 'Mon','C',77 union all
select 'Tue','C',87 union all
select 'Wed','C',8;with t
as
(
select distinct([day]) from @t
)
select t.[DAY],a.[name],a.[income],b.[name],b.[income],c.[name],c.[income]
from t
left join @t a on (t.[day]=a.[day] and a.name='A')
left join @t b on (t.[day]=b.[day] and b.name='B')
left join @t c on (t.[day]=c.[day] and c.name='C')--结果:
DAY Name Income Name Income Name Income
Mon A 11 B 45 C 77
Tue A 12 B 46 C 87
Wed A 13 B 78 C 8按上面 SQL 语句(MSSQL 2005-2008),就可以轻松打印出你需要的结果。