两个select查询问题?高手帮忙。

ad4017 2003-05-22 08:09:55
问题一:
两个表:
T1(付款方式) T2(购货记录)
ID PayType ID name Amount Pay1 am1 pay2 am2
0 现金 1 aa 232 现金 232 null null
1 支票 2 bb 220 购物卷 200 现金 20
2 信用卡 3 cc 210 信用卡 100 现金 110
3 购物卷
能下面的结果集吗?
总金额 现金 支票 信用卡 购物卷
662 362 0 100 200
注意:T1表中的付款方式不固定,用户可以增加
问题二:
两个表:
A1(科目) A2(成绩)
Object ID name Object grade
数学 1 aa 数学 95
英语 1 aa 英语 88
语文 1 aa 语文 90
2 bb 语文 93
2 bb 英语 83
2 bb 数学 86
能下面的结果集吗?
ID name 数学 英语 语文
1 aa 95 88 90
2 bb 86 83 93
注意:A1表中的科目不固定,用户可以增加
...全文
32 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ad4017 2003-05-22
  • 打赏
  • 举报
回复
经测试的:
问题1:
declare varchar(8000)
select * into #
from (select Pay1 PayType ,am1 am from t2 union all select Pay2 PayType ,am2 am from t2 )aaa
set @sql =''
select @sql =@sql + ',sum(case when PayType ='''+PayType+''' then isnull(am,0)
else 0 end ) as ['+ PayType+']' from t1
exec (select sum(am) 总金额 '+ @sql + ' from #')
问题2:
参考"大力"
感谢大力、monkey、扬帆破浪和游泳的渔。
caiyunxia 2003-05-22
  • 打赏
  • 举报
回复
问题1
declare varchar(8000)
select * into #
from (select Pay1 PayType ,am1 am from t2 union all select Pay2 PayType ,am2 am from t2 )
set @sql =''
set @sql =@sql + ',sum(case when PayType ='''+PayType+''' then isnull(am,0)
else 0 end ) as '+ PayType
from (select PayType from t1) aaa
exec (select sum(am) 总金额 '+ @sql + ' from #')


pengdali 2003-05-22
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql =''
select @sql=@sql+',sum(case when Object ='''+Object +''' then grade end ) ['+Object+']'from A1
exec ('select ID,name ' + @sql + ' from a2 group by ID,name')
pengdali 2003-05-22
  • 打赏
  • 举报
回复
问题2

declare varchar(8000)
set @sql =''
select @sql=@sql+',sum(case when Object ='''+Object +''' then grade end ) ['+Object+']'from A1
exec ('select ID, name ' + @sql + ' from a2 group by ID , name ')
Yang_ 2003-05-22
  • 打赏
  • 举报
回复
象面试题
Yang_ 2003-05-22
  • 打赏
  • 举报
回复
问题二:
select id,name,
sum(case when Object='数学' then grade else 0 end) 数学,
sum(case when Object='英语' then grade else 0 end) 英语,
sum(case when Object='语文' then grade else 0 end) 语文
from a2
group by id,name

yydy 2003-05-22
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1815/1815736.xml?temp=.63612
这个看看吧
caiyunxia 2003-05-22
  • 打赏
  • 举报
回复
declare nvarchar(1000)
set @sql =''
select @sql=@sql + ',sum(case when Object ='''+Object +''' then grade
else 0 end ) as '+ grade
from (select Object from A1) aaa
exec ('select ID, name ' + @sql + ' from a2 group by ID , name ')
Yang_ 2003-05-22
  • 打赏
  • 举报
回复
问题一:
select sum(Amount) 总金额,
sum(case when Pay1='现金' then am1 else 0 end)+sum(case when Pay2='现金' then am2 else 0 end) 现金,
sum(case when Pay1='支票' then am1 else 0 end)+sum(case when Pay2='支票' then am2 else 0 end) 支票,
sum(case when Pay1='信用卡' then am1 else 0 end)+sum(case when Pay2='信用卡' then am2 else 0 end) 信用卡,
sum(case when Pay1='购物卷' then am1 else 0 end)+sum(case when Pay2='购物卷' then am2 else 0 end) 购物卷
from t2

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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