SQL 问题

xuedaniel 2004-08-26 11:08:03
YP表

xf_date youpin qty
2004-08-01 90# 80
2004-08-02 93# 70
2004-08-02 90# 20
2004-08-03 90# 60
2004-08-04 97# 50
2004-08-05 0# 40
2004-08-07 93# 30

如何得到如下结果:
90# 93# 97# 0#
2004-08-01 80 70
2004-08-02 20
2004-08-03 60
2004-08-04 50
2004-08-05 40
2004-08-07 30

须按xf_date排列,youpin项目不受限制(不止90#、93#、97#、0#,可能还有其它)

那位能帮忙解决的,不胜感激。

QQ:48158286
MAIL:xuedaniel@163.net




...全文
129 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoveSQL 2004-08-26
  • 打赏
  • 举报
回复
create table tb (xf_date datetime, youpin varchar(20), qty int)
insert into tb select
'2004-08-01','90#', 80 union all select
'2004-08-02','93#', 70 union all select
'2004-08-02','90#', 20 union all select
'2004-08-03','90#', 60 union all select
'2004-08-04','97#', 50 union all select
'2004-08-05','0#', 40 union all select
'2004-08-07','93#', 30

--测试

declare @str varchar(4000)
set @str=''
select @str=@str+','+'sum(case youpin when '''+a.youpin+''' then qty else 0 end ) ['+a.youpin+']'
from (select distinct youpin from tb) a

exec('select xf_date'+@str+' from tb group by xf_date order by xf_date')

drop table tb
--结果
xf_date 0# 90# 93# 97#
------------------------------------------------------ ----------- ----------- ----------- -----------
2004-08-01 00:00:00.000 0 80 0 0
2004-08-02 00:00:00.000 0 20 70 0
2004-08-03 00:00:00.000 0 60 0 0
2004-08-04 00:00:00.000 0 0 0 50
2004-08-05 00:00:00.000 40 0 0 0
2004-08-07 00:00:00.000 0 0 30 0
futulove 2004-08-26
  • 打赏
  • 举报
回复
动态语句
以前这样的贴子有的是
搜一下参考一下就可以了
yjzhg 2004-08-26
  • 打赏
  • 举报
回复
交叉表,搜一下以前的贴子
giggsbj 2004-08-26
  • 打赏
  • 举报
回复
select xf_date, qty as 90# ,null as 93# ,null as 97# ,null as 0#
union
select xf_date, null as 90# ,qty as 93# ,null as 97# ,null as 0#
union
select xf_date, null as 90# ,null as 93# ,qty as 97# ,null as 0#
union
select xf_date, null as 90# ,null as 93# ,null as 97# ,qty as 0#

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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