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
查看全文
相关阅读:
自己做的板子,电脑识别不出下载口(micro-usb),程序无法烧入
博客园首页添加访问量
python-day5爬虫基础之正则表达式2
altium designer 画板 电子元器件的名称不能集体修改
python-day4爬虫基础之正则表达式
python-day3爬虫基础之下载网页
python-day2爬虫基础之爬虫基本架构
关于电脑识别不出自己画的板子上的USB接口问题
python-day1 爬虫基础之HTTP基本原理
PAT A1019 General Palindromic Number (20 分)——回文,进制转换
原文地址:https://www.cnblogs.com/wghao/p/748964.html
最新文章
Ace of Aces(含map做法)
Lambda
内部类
interface和abstruct比较
interface
abstruct
不可变类
常量池
final
单例类
热门文章
初始化顺序
Python之发邮件
Python之递归
Python之参数类型、变量
linux sed命令详解
【转】shell之for、while、until循环
[转]linux awk命令详解
【转】redis-cluster安装配置
【转】前后端分离介绍
关于底部的裸露焊盘的处理办法
Copyright © 2011-2022 走看看