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
查看全文
相关阅读:
性能分析一:查看程序占用系统的内存 .
Winform中ToolTip的用法
30岁的程序员
序列化
CMD中可执行的结束进程命令
数据库设计规范与技巧
判断字符串编码思路
字符串加密思路
在同一个页面施用多个不同的jQuery版本而不冲突的方法
mysql 数据库设计
原文地址:https://www.cnblogs.com/wghao/p/748964.html
最新文章
2022年软件安全行业七大趋势预测
Selenium:判断页面元素是否可见、是否可用、是否选中
Selenium鼠标操作
支付功能测试
Selenium动态元素定位
ERROR: [Errno 98] Address already in use
Selenium:PO模型设计
Python列表方法
DataTable 状态更新不起作用
Drupal 添加模块出现莫名其妙的错误(往往出现在模块较多时)
热门文章
查询 Oracle 表的基本结构(写文档)
C# 中两个DataTable join 连接
Drupal 中menu block模块的使用
处理js事件时,获取键盘数字注意
Dubbo远程rpc调用MybatisPlus自带的方法引发的几个错误
Nginx配置简单说明
Dev控件的用法
自己常用的工具
时间管理_80/20法则
使用SQL Server 索引中的包含性列的索引(Include)
Copyright © 2011-2022 走看看