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
查看全文
相关阅读:
数据结构与算法
ROS 机器人技术
我常用的 VSCode C:C++ 插件!
Ubuntu 常用的录屏、截图、Gif 软件!
从 0 开始机器学习
Word 设置页码从指定页开始的详细步骤!
Ubuntu16.04 更新 ruby-2.6!
配置 Git 不用每次 push 都输入密码!
解决 rubygems.org 无法访问的问题!
PHP 反序列化漏洞入门学习笔记
原文地址:https://www.cnblogs.com/wghao/p/748964.html
最新文章
MySQL 索引失效
mysql explain的extra
mysql explain的type的
Java 从入门到精通-反射机制
Oracle 字符串分割,并将内码转中文(简单实现),项目实战
Oracle ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)
Oracle 利用PLSQL一分钟将表结构(PROJ),从A库移植到B库,一分钟将A库中表数据移植到B库中!!!
设计模式之☞模板模式
Spring(XML方式)简单入门
yb课堂实战之轮播图接口引入本地缓存 《二十一》
热门文章
yb课堂 谷歌开源缓存框架Guava cache,封装API 《二十》
yb课堂之高并发项目必备利器之分布式缓存和本地缓存 《十九》
yb课堂实战之接口协议调整和日期格式 《十八》
yb课堂之订单列表接口开发 《十七》
yb课堂实战之订单和播放记录事务控制 《十六》
yb课堂实战之播放记录表设计和模块开发 《十五》
yb课堂之用户下单模块开发 《十四》
yb课堂之个人信息接口开发 《十三》
yb课堂实战之LoginInterceptor注册和放行路径 《十二》
从 0 开始机器学习
Copyright © 2011-2022 走看看