急求SQL语句, pengdali(大力 V3.0) 请进! zjcxc(邹建) 请进!各位高手请进!!

sharpdog 2004-10-08 05:24:33
现有如下两表:
单位表:
create table 单位表 (单位代码 varchar(10),单位名称 varchar(50))
insert 单位表 values('01','中国单位')
insert 单位表 values('0101','山东单位')
insert 单位表 values('010101','山东济南单位')
insert 单位表 values('010102','山东青岛单位')
insert 单位表 values('01010201','山东青岛即默单位')
insert 单位表 values('0102','山西单位')
insert 单位表 values('010201','山西大同单位')
insert 单位表 values('0103','陕西单位')
insert 单位表 values('010301','陕西西安单位')
insert 单位表 values('010302','陕西咸阳单位')


供应表:
create table 供应表 (物资编号 varchar(10),物资名称 varchar(50),单位代码 varchar(10),供应数量

int)
insert 供应表 values('0001','电子称','010101',1)
insert 供应表 values('0002','电动机','010101',1)
insert 供应表 values('0001','电子称','01010201',1)
insert 供应表 values('0002','电动机','01010201',1)
insert 供应表 values('0001','电子称','010201',1)
insert 供应表 values('0003','电动刷','010201',1)
insert 供应表 values('0004','电动车','010302',1)


最后统计出的报表格式如下所示,请问用SQL语句如何实现!

select '','','','中国单位','中国单位','中国单位','中国单位','中国单位','中国单位','中国单位

','中国单位','中国单位'
union all select '','','','山东单位','山东单位','山东单位','山东单位','山西单位','山西单位

','陕西单位','陕西单位','陕西单位'
union all select '','','',' ',' ','山东青岛单位','山东青岛单位',' ',' ',' ',' ',' '
union all select '序号','装备名称','合计','小计','山东济南单位','山东青岛即默单位一','山东青

岛即默单位二','小计','山西大同单位','小计','陕西西安单位','陕西咸阳单位'
union all select '','总计','7','4','2','2','','2','2','1','','1'
union all select '1','(0001)电子称','3','2','1','1','','1','1','','',''
union all select '2','(0002)电动机','2','2','1','1','','','','','',''


union all select '3','(0003)电动刷','1','','','','','1','1','','',''
union all select '4','(0004)电动车','1','','','','','','','1','','1'
...全文
574 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
TO: zjcxc(邹建)
那么就把小计固定在第二级吧,谢谢!!!
zjcxc 2004-10-09
  • 打赏
  • 举报
回复
楼主的统计怪怪的,没有软件上可遵循的规律
zjcxc 2004-10-09
  • 打赏
  • 举报
回复
共有?? 这个怎么判断?

山东济南单位','山东青岛即默单位一','山东青岛即默单位二','山西大同单位'

这个也可以找共有啦,为什么就前三个算共有?


'山东青岛即默单位一','山东青岛即默单位二'
这个也可以共有'山东青岛单位' 啦,为什么它没有小计,而要合并到'山东济南单位'再算共有父级?
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
TO: zjcxc(邹建)

新测试数据如下:
单位表:
create table 单位表 (单位代码 varchar(10),单位名称 varchar(50))
insert 单位表 values('01','中国单位')
insert 单位表 values('0101','山东单位')
insert 单位表 values('010101','山东济南单位')
insert 单位表 values('010102','山东青岛单位')
insert 单位表 values('01010201','山东青岛即默单位一')
insert 单位表 values('01010202','山东青岛即默单位二')
insert 单位表 values('0102','山西单位')
insert 单位表 values('010201','山西大同单位')
insert 单位表 values('0103','陕西单位')
insert 单位表 values('010301','陕西西安单位')
insert 单位表 values('010302','陕西咸阳单位')


供应表:
create table 供应表 (物资编号 varchar(10),物资名称 varchar(50),单位代码 varchar(10),供应数量 int)
insert 供应表 values('0001','电子称','010101',1)
insert 供应表 values('0002','电动机','010101',1)
insert 供应表 values('0001','电子称','01010201',1)
insert 供应表 values('0002','电动机','01010201',1)
insert 供应表 values('0001','电子称','010201',1)
insert 供应表 values('0003','电动刷','010201',1)
insert 供应表 values('0004','电动车','010302',1)


单位表层次不定,但供应表只能供给单位表中的最底层单位,统计时从最底层单位开始统计,上层单位根据级别放置在不同的位置上!!!!
最后统计出的报表格式如下所示,请问如何实现!

select '','','','中国单位','中国单位','中国单位','中国单位','中国单位','中国单位','中国单位','中国单位','中国单位'
union all select '','','','山东单位','山东单位','山东单位','山东单位','山西单位','山西单位
','陕西单位','陕西单位','陕西单位'
union all select '','','',' ',' ','山东青岛单位','山东青岛单位',' ',' ',' ',' ',' '
union all select '序号','装备名称','合计','小计','山东济南单位','山东青岛即默单位一','山东青岛即默单位二','小计','山西大同单位','小计','陕西西安单位','陕西咸阳单位'
union all select '','总计','7','4','2','2','','2','2','1','','1'
union all select '1','(0001)电子称','3','2','1','1','','1','1','','',''
union all select '2','(0002)电动机','2','2','1','1','','','','','',''
union all select '3','(0003)电动刷','1','','','','','1','1','','',''
union all select '4','(0004)电动车','1','','','','','','','1','','1'


"山东济南单位 山东青岛即默单位一 山东青岛即默单位二"都是最未级,小计是统计到山东单位,意思是小计要统计到最未级共有的父类级的合计。
solidpanther 2004-10-09
  • 打赏
  • 举报
回复
用数据仓库的方法,建立多维数据集,
1,建立父子类型维度:单位
2,建立父子类型维度:物资编号
3,建立度量值:供应数量 和 一个用count聚合的 单位号

比较复杂,如果没用过的话确实比较麻烦
zjcxc 2004-10-09
  • 打赏
  • 举报
回复

其二,假设"山东济南单位 山东青岛即默单位一 山东青岛即默单位二"都是最未级,小计是统计到山东单位,那意思是小计是固定统计到第二级的合计?
zjcxc 2004-10-09
  • 打赏
  • 举报
回复
你的统计根本不规范,你的单位表中没有 山东青岛即默单位一 山东青岛即默单位二

这是其一,如果你的数据给错了,重新给数据

其二,假设"山东济南单位 山东青岛即默单位一 山东青岛即默单位二"都是最未级,小计是统计到山东单位,那意思是小计是统计到第一级的合计?
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
请zjcxc(邹建)大哥务必帮忙!!!!!
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
to: erlengzi1982(二愣子) 
“select 。。。。 union all 。。。。”是最终要出的结果,就两个表,两个表之间是通过单位代码联系在一起的!!
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
TO: zjcxc(邹建)

小计 山东济南单位 山东青岛即默单位一 山东青岛即默单位二

小计是山东济南单位+山东青岛即默单位一+山东青岛即默单位二

因为它们同属于山东单位并且山东青岛即默单位一和山东青岛即默单位二也都是最未级
erlengzi1982 2004-10-09
  • 打赏
  • 举报
回复
也许你的思路是正确的,但是你表达的方式可能有问题,大家都看不懂!

说报表,就把报表的要求,需要列出的内容,各个内容之间的关联关系说清楚就可以了,你上面说什么“select 。。。。 union all 。。。。”什么意思吗?
zjcxc 2004-10-09
  • 打赏
  • 举报
回复
按最未级怎么会有小计? 按最未级,这个"山东济南单位"就是最未级,它的值也就是小计值,那小计就没有意义了
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
zjcxc(邹建):说得数据不符的问题我已经做了更正!!
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
小计是按最末级的!!
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
此帖仍然有效!!!
zjcxc 2004-10-09
  • 打赏
  • 举报
回复
建议楼主在说明问题时,自己先看看自己的描述与提供的数据是否符合,并且加上必要的说明.
zjcxc 2004-10-09
  • 打赏
  • 举报
回复
看不懂:
小计 山东济南单位 山东青岛即默单位一 山东青岛即默单位二

山东青岛即默单位一 山东青岛即默单位二,这是从那里来的?

山东济南单位 山东青岛即默单位 都不在一个级次上,前面那个小计是按那一级统计?
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
我整理一下,重新开帖,这一帖稍后就结!!!请大家继续关注!!!
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
用analysis services如何实现,solidpanther(╃╄╃我爱机器猫╄╃╄) 请指教!!!!!
sharpdog 2004-10-09
  • 打赏
  • 举报
回复
单位表层次不定,但供应表只能供给单位表中的最底层单位,统计时从最底层单位开始统计,上层单位根据级别放置在不同的位置上!!!!
加载更多回复(33)

27,579

社区成员

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

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