作者nika (千少一)
看板Database
标题Re: [SQL ] 如何将直列资料变成横列
时间Mon Aug 13 11:00:51 2007
※ 引述《bocosom (waterweeds)》之铭言:
: ※ 引述《koken (都要怪加拿大)》之铭言:
: : Column1 Column2
: : A a
: : A d
: : A g
: : ...
: : ...
: : B a
: : B c
: : B p
: : ...
: : ...
: : 这样子table变得太长而难以阅读
: : 如何变成
: : A a,d,g....
: : B a,c,p....
: : 其中a,d,g...的资料在不在同一行都无所谓 如果在同一个cell最好
: : 请问要如何办到呢
: 感觉上有点奇怪, 这样做不是反而不方便 也不符合BCNF(连1NF也没有)
: 这样往後要处理资料会很不方便吧(?)
: 不太了解这样做的用意..
这种东西只适合资料少的报表呈现,如果资料量多可能就不适合这样的呈现
方式。尤其当你的Column2有重覆资料时更难呈现。再说,A跟B的资料不一
致时会更难办。
假设你的Column2是数字栏位
select Column1, sum(a1) a1, sum(a2) a2, sum(a3) a3
from
(
select Column1, Column2 a1, 0 a2, 0 a3
from TableName
where Column1 ='A' and Column2 = a
union
select Column1, 0 a1, Column a2, 0 a3
from TableName
where Column ='A' and Column2 = d
union
select Column1, 0 a1, 0 a2, Column2 a3
from TableName
where Column ='A' and Column2 = g
)
group by Column1
以上是A的部份,B的部份同上,再跟A union
这样你的报表就可以呈现你要的样子。
不知道这样是否有得到你要的答案。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.39.178
※ 编辑: nika 来自: 61.59.39.178 (08/13 11:01)