请教一个SQL方面的问题

hnzgw 2006-03-10 09:30:41
我有一个表:
table1:
景点 票证名称 票证性质 出票方式 数量 金额
观潮公园(东大门) 观潮公园日票 单票 购票 23 460
观潮公园(东大门) 观潮公园日票 单票 签单 10 200
观潮公园(迎宾门) 观潮公园日票 单票 购票 29 580
观潮公园(迎宾门) 观潮公园夜票 夜票 购票 3 15
海神庙 海神庙门票 单票 购票 11 110

要得到结果是:
景点 单票购票 单票签单 夜票购票
数量 金额 数量 金额 数量 金额
观潮公园(东大门) 23 460 10 200
观潮公园(迎宾门) 29 580 3 15
海神庙 11 110

希望各位高手指点一下,这种表格真的无处下手
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
$扫地僧$ 2006-03-10
  • 打赏
  • 举报
回复
create table A
(
景点 varchar(100),
票证名称 varchar(100),
票证性质 varchar(100),
出票方式 varchar(100),
数量 int,
金 int
)

insert A select '观潮公园(东大门)','观潮公园日票','单票','购票',23,460
insert A select '观潮公园(东大门)','观潮公园日票','单票','签单',10,200
insert A select '观潮公园(迎宾门)','观潮公园日票','单票','购票',29,580
insert A select '观潮公园(迎宾门)','观潮公园夜票','夜票','购票',3,15
insert A select '海神庙','海神庙门票','单票','购票',11,110

declare @T_SQL varchar(8000)
set @T_SQL=''
select @T_SQL=@T_SQL + ' max(case when (票证性质=''' + T1.票证性质 + ''' and 出票方式='''+ T2.出票方式 + ''') then 数量 else 0 end )as ''' + T1.票证性质+T2.出票方式+'数量'','
+' max(case when (票证性质=''' + T1.票证性质 + ''' and 出票方式='''+ T2.出票方式 + ''') then 金 else 0 end )as ''' + T1.票证性质+T2.出票方式+'金'','
from (select distinct 票证性质 from A) T1,(select distinct 出票方式 from A) T2
set @T_SQL='select 景点,' + left(@T_SQL,len(@T_SQL)-1) + 'from A group by 景点'
exec (@T_SQL)
WangZWang 2006-03-10
  • 打赏
  • 举报
回复
select 景点,[单票购票(数量)] =sum(case when 票证性质='单票' and 出票方式='购票'
then 数量 else 0 end),
[单票购票(金额)] =sum(case when 票证性质='单票' and 出票方式='购票'
then 金额 else 0 end),
[单票签单(数量)] =sum(case when 票证性质='单票' and 出票方式='签单'
then 数量 else 0 end),
[单票签单(金额)] =sum(case when 票证性质='单票' and 出票方式='签单'
then 金额 else 0 end),
[夜票购票(数量)] =sum(case when 票证性质='夜票' and 出票方式='购票'
then 数量 else 0 end),
[夜票购票(金额)] =sum(case when 票证性质='夜票' and 出票方式='购票'
then 金额 else 0 end),
from table1
group by 景点
$扫地僧$ 2006-03-10
  • 打赏
  • 举报
回复
create table A
(
景点 varchar(100),
票证名称 varchar(100),
票证性质 varchar(100),
出票方式 varchar(100),
数量 int,
金 int
)

insert A select '观潮公园(东大门)','观潮公园日票','单票','购票',23,460
insert A select '观潮公园(东大门)','观潮公园日票','单票','签单',10,200
insert A select '观潮公园(迎宾门)','观潮公园日票','单票','购票',29,580
insert A select '观潮公园(迎宾门)','观潮公园夜票','夜票','购票',3,15
insert A select '海神庙','海神庙门票','单票','购票',11,110


select T.景点,
(select 数量 from A where 票证性质='单票' and 出票方式='购票' and 景点=T.景点) as '单票购票数量',
(select 金 from A where 票证性质='单票' and 出票方式='购票' and 景点=T.景点) as '单票购票金',
(select 数量 from A where 票证性质='单票' and 出票方式='签单' and 景点=T.景点) as '单票签单数量',
(select 金 from A where 票证性质='单票' and 出票方式='签单' and 景点=T.景点) as '单票签单金',
(select 数量 from A where 票证性质='夜票' and 出票方式='购票' and 景点=T.景点) as '夜票购票数量',
(select 金 from A where 票证性质='夜票' and 出票方式='购票' and 景点=T.景点) as '夜票购票金'
from (select distinct 景点 from A) T
hnzgw 2006-03-10
  • 打赏
  • 举报
回复
能详细一点吗,麻烦各位高手了
lsqkeke 2006-03-10
  • 打赏
  • 举报
回复
用动态SQL!

34,587

社区成员

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

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