求一个报表 sql

wangfengpp2004 2015-07-21 07:02:48
表b(物料,供应商,报价价格,报价次数)
记录(物料1,供应商1,1,第1次报价)

记录(物料1,供应商1,2,第2次报价)
记录(物料2,供应商1,1,第1次报价)
记录(物料3,供应商1,1,第1次报价)

记录(物料2,供应商2,1,第1次报价)
记录(物料2,供应商2,1,第2次报价)
记录(物料3,供应商2,1,第1次报价)
记录(物料3,供应商3,1,第1次报价)


。。。。。。。 表中的记录是不确定的,即供应商不确定多少家,料号不确定是多少个,报价次数也不确定多少次

要生成如下报表。。

物料 供应商1第一次报价 供应商1第2次报价 供应商2第1次报价 供应商2第2次报价 供应商3第1次报价

物料1 1 2
物料2 1 1 1
物料3 1
...全文
151 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pact_Alice 2015-07-23
  • 打赏
  • 举报
回复
首先你用什么做报表的,是SQL Server 中的Report Service吗?如果是这个的话是不可以用动态语句的,它有自带的矩阵,帮你做到你需要的
刨坑数据 2015-07-23
  • 打赏
  • 举报
回复
这是一个典型的交叉表,几乎任何报表工具都能轻易搞定。直接取数即可,不用在SQL处理转置,比如用润乾集算报表这样写:

行列都可以动态。
xiaoxiangqing 2015-07-22
  • 打赏
  • 举报
回复
用case when来生成动态语句
ダ雨夹雪リ 2015-07-22
  • 打赏
  • 举报
回复
create Table T
(
物料 Varchar(10),
供应商 Varchar(10),
价格 int,
报价次数 Varchar(10)
)

insert into T values('物料1','供应商1',1,'第1次报价')
insert into T values('物料1','供应商1',2,'第2次报价')
insert into T values('物料2','供应商1',3,'第1次报价')
insert into T values('物料3','供应商1',4,'第1次报价')
insert into T values('物料2','供应商2',5,'第1次报价')
insert into T values('物料2','供应商2',6,'第2次报价')
insert into T values('物料3','供应商2',7,'第1次报价')
insert into T values('物料3','供应商3',8,'第1次报价')

Declare @where Varchar(8000)=''
Declare @sql Varchar(8000)
Select @where=@where+','+次数 From
(
Select distinct 供应商+报价次数 As 次数 from T
)S

Set @sql='
Select * From
(
Select 物料,供应商+报价次数 As 次数,价格 from T
)S
pivot
(
max(价格)
For
次数 in('+stuff(@where,1,1,'')+')
)P'
Exec (@sql)
道玄希言 2015-07-21
  • 打赏
  • 举报
回复
可以得出你要的查询结果, 但是在报表中怎么做, 这个我就不知道了。
道玄希言 2015-07-21
  • 打赏
  • 举报
回复
数据不多, 那就动态拼接SQL语句吧 先用供应商和报价次数分组 得出列名 然后动态拼接。
wangfengpp2004 2015-07-21
  • 打赏
  • 举报
回复
供应商不多,理论上是没有限制,但是每次都是几个供应商而已啦,报价也不会很多次。 只是看大家有没有好的方法和思路参考下了。。 因为这样看起来比较直观点。 数据是不多的
道玄希言 2015-07-21
  • 打赏
  • 举报
回复
我想知道, 比如, 1W供应商, 每个供应商大概有来了上十次报价, 你这报表成什么样子了 ?
wangfengpp2004 2015-07-21
  • 打赏
  • 举报
回复
顶~~~~~~~~~~~~~~~~~~~~~~~~~~~·····
shoppo0505 2015-07-21
  • 打赏
  • 举报
回复
这个报表没办法做。SQL中可以不确定输出列数,但是报表中是固定的。然而根据你的要求,列数肯定是动态的,所以没法做

22,301

社区成员

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

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