SQL关于数据统计

hahaxiao94 2016-03-18 01:59:10
现在有一个需求:
一张表里有诺干个品种,每个品种每天的售价不同,目前表的大致是如下:
销售时间 销售品种 零售价格
2月1日 A 20
2月1日 B 20
2月1日 C 20
2月2日 A 21
2月2日 B 21
2月2日 C 21
以下省略诺干

现在要求将数据进行统计,在程序里的效果大致如下:
销售品种 2月1日 2月2日 。。。。
A 20 21 。。。。。。
B 20 21 。。。。。
C 20 21 。。。。。

求大神帮忙 ,表头不要紧,我需要的是下面数据的显示如何实现
...全文
132 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hahaxiao94 2016-03-22
  • 打赏
  • 举报
回复
虽然两位大神的方法我都试过了,都有点问题,但提供了思路所以谢谢啦
中国风 2016-03-18
  • 打赏
  • 举报
回复
参照 --结束日期+1 DECLARE @Sql NVARCHAR(max)='' SELECT @Sql=@Sql+','+QUOTENAME(销售时间)+'=MAX(CASE WHEN 销售时间='+QUOTENAME(销售时间,'''')+' THEN THEN 零售价格 END)' FROM T1 WHERE 销售时间 >=开始日期 AND 销售时间<结束日期 GROUP BY 销售时间 EXEC('SELECT 销售品种 '+@Sql+' FROM TABLE1 GROUP BY 销售品种 ')
hahaxiao94 2016-03-18
  • 打赏
  • 举报
回复
引用 1 楼 roy_88 的回复:
SELECT
 销售品种 
,MAX(CASE WHEN 销售时间='2月1日' THEN 零售价格 END)  AS [2月1日]
,MAX(CASE WHEN 销售时间='2月2日' THEN 零售价格 END)  AS [2月2日]
FROM TABLE1 
GROUP BY  销售品种
大神这个我试过了,对于数据量小是可以的,但是,因为是从程序里传来的一个开始日期和一个结束日期,这两个的日期间隔不确定,有可能很长一段时间的话,不可能每一列都去列出来,应该怎么办呢
唐诗三百首 2016-03-18
  • 打赏
  • 举报
回复

create table 一张表
(销售时间 varchar(20),销售品种 varchar(10),零售价格 int)

insert into 一张表
  select '2月1日', 'A', 20 union all
  select '2月1日', 'B', 20 union all
  select '2月1日', 'C', 20 union all
  select '2月2日', 'A', 21 union all
  select '2月2日', 'B', 21 union all
  select '2月2日', 'C', 21


declare @tsql varchar(6000)

select @tsql=isnull(@tsql+',','')+'['+销售时间+']'
 from (select distinct 销售时间 from 一张表) t

select @tsql='select 销售品种,'+@tsql
                    +'  from 一张表 '
                    + '  pivot(max(零售价格) for 销售时间 in('+@tsql+')) t '

exec(@tsql)

/*
销售品种     2月1日     2月2日
--------------- ------------- -------------
  A                20             21
  B                20             21
  C                20             21

(3 row(s) affected)
*/

中国风 2016-03-18
  • 打赏
  • 举报
回复
SELECT
 销售品种 
,MAX(CASE WHEN 销售时间='2月1日' THEN 零售价格 END)  AS [2月1日]
,MAX(CASE WHEN 销售时间='2月2日' THEN 零售价格 END)  AS [2月2日]
FROM TABLE1 
GROUP BY  销售品种

22,209

社区成员

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

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