zoukankan
html css js c++ java
解决一条特殊的分类统计问题(SQL)
原问题如下:
/**/
/*
table1:
序号 类别
01 玩具
02 食物
table2:
序号 类别 名称 对应编号
01 玩具 大小 A1
02 玩具 面积 A2
03 玩具 体积 A3
04 食物 重量 A7
05 食物 颜色 A9
table3:
序号 物品 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
..
01 皮球 10 20 30
02 篮球 20 30 40
03 苹果 20 50
04 香蕉 80 70
显示效果
对应2种类别
当是玩具类别时候显示
物品 类别 大小 面积 体积
皮球 玩具 10 20 30
篮球 玩具 20 30 40
当是食物类别时候显示
物品 类别 重量 颜色
苹果 食物 20 50
香蕉 食物 80 70
请给出具体的查询过程。。谢谢
*/
自感觉不错的一个解决方法:
create
table
A(序号
nvarchar
(
10
),类别
nvarchar
(
10
))
insert
A
select
'
01
'
,
'
玩具
'
union
all
select
'
02
'
,
'
食物
'
create
table
B(序号
nvarchar
(
10
), 类别
nvarchar
(
10
), 名称
nvarchar
(
10
), 对应编号
nvarchar
(
10
))
insert
B
select
'
01
'
,
'
玩具
'
,
'
大小
'
,
'
A1
'
union
all
select
'
02
'
,
'
玩具
'
,
'
面积
'
,
'
A2
'
union
all
select
'
03
'
,
'
玩具
'
,
'
体积
'
,
'
A3
'
union
all
select
'
04
'
,
'
食物
'
,
'
重量
'
,
'
A7
'
union
all
select
'
05
'
,
'
食物
'
,
'
颜色
'
,
'
A9
'
create
table
C(序号
nvarchar
(
10
), 物品
nvarchar
(
10
), A1
int
, A2
int
, A3
int
, A4
int
, A5
int
, A6
int
, A7
int
, A8
int
, A9
int
, A10
int
)
insert
C(序号, 物品, A1, A2, A3)
values
(
'
01
'
,
'
皮球
'
,
10
,
20
,
30
)
insert
C(序号, 物品, A1, A2, A3)
values
(
'
02
'
,
'
篮球
'
,
20
,
30
,
40
)
insert
C(序号, 物品, A7, A9)
values
(
'
03
'
,
'
苹果
'
,
20
,
50
)
insert
C(序号, 物品, A7, A9)
values
(
'
04
'
,
'
香蕉
'
,
80
,
70
)
DECLARE
@Input
nvarchar
(
10
)
--
要统计的类别,可以根据实际需要输入
DECLARE
@EXECUTE_SQL
nvarchar
(
4000
)
DECLARE
@EXECUTE_WHERE
nvarchar
(
4000
)
SELECT
@Input
=
'
食物
'
,
@EXECUTE_SQL
=
'
SELECT [物品],
'''
+
@Input
+
'''
AS [类别]
'
,
@EXECUTE_WHERE
=
'
WHERE 1=1
'
SELECT
@EXECUTE_SQL
=
@EXECUTE_SQL
+
'
,SUM(
'
+
[
对应编号
]
+
'
) AS [
'
+
[
名称
]
+
'
]
'
,
@EXECUTE_WHERE
=
@EXECUTE_WHERE
+
'
AND
'
+
[
对应编号
]
+
'
IS NOT NULL
'
FROM
B
WHERE
B.
[
类别
]
=
@Input
SET
@EXECUTE_SQL
=
@EXECUTE_SQL
+
'
FROM C
'
+
@EXECUTE_WHERE
+
'
GROUP BY [物品]
'
EXECUTE
(
@EXECUTE_SQL
)
DROP
TABLE
A,B,C
/**/
/*
物品 类别 大小 面积 体积
皮球 玩具 10 20 30
篮球 玩具 20 30 40
当是食物类别时候显示
物品 类别 重量 颜色
苹果 食物 20 50
香蕉 食物 80 70
*/
不是很难,要说难点就是怎么样构造SQL语句而已。
原帖:
http://community.csdn.net/Expert/topic/5535/5535330.xml?temp=.8875543
查看全文
相关阅读:
开发网站多端同时测试简单演示
Vue DevTools 安装和浏览器跳转到编辑器指定组件
在linux 平台上源码编译安装MySQL 8.0
程序员PS技能(四):程序员创建PSD文件、展示简单PSD设计流程,上传PSD至蓝湖,并下载Demo切图
Matlab+Qt开发笔记(二):Qt打开mat文件显示读取的数据
产品分享:Qt数学函数公式学科工具,当前版本v1.0.0
Hdf5开发笔记(一):hdf5介绍,在windows上编译msvc2015x64版本
libmatio开发笔记(一):matlab文件操作libmatio库介绍,编译和基础Demo
Hi3516开发笔记(一):海思HI3516DV300芯片介绍,入手开发板以及Demo测试
Hi3516开发笔记(三):Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析
原文地址:https://www.cnblogs.com/wghao/p/748964.html
最新文章
[源码解析] PyTorch 分布式(17) 结合DDP和分布式 RPC 框架
[源码解析] PyTorch 分布式(15) 使用分布式 RPC 框架实现参数服务器
AzureDirectory Library for Lucene.Net
AzureDirectory Library for Lucene.Net(续)
Android 中 declarestyleable 和 style 的不同
Android Resources Overview —— Android 资源文件
Spring Boot 2.6.0正式发布:默认禁止循环依赖、增强Docker镜像构建...
来学习开发一个网页版马里奥小游戏吧
使用 @Transactional 时常犯的N种错误
Spring Cloud 2021.0.0 正式发布,第一个支持Spring Boot 2.6的版本!
热门文章
Log4j2再发新版本2.16.0,完全删除Message Lookups的支持,加固漏洞防御
一行配置搞定 Spring Boot项目的 log4j2 核弹漏洞!
让你用Markdown的方式来做PPT
IntelliJ IDEA 2021.3 正式发布:支持远程开发、IDE故障排查等多项优化改进
如何用Serverless让SaaS获得更灵活的租户隔离和更优的资源开销
Mac 电脑 系统自带的 java 安装路径在哪里?
Linux 阿里云:记录一次低配 ecs 服务器在 cpu、内存打满情况下无法远程连接的解决过程
Mac 电脑 解决 command not found:mvn
建立METAINF/spring.factories文件的意义何在
Navicat 12.1.18 版本 激活教程
Copyright © 2011-2022 走看看