原问题如下:
![]()
*/
自感觉不错的一个解决方法:
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
*/
不是很难,要说难点就是怎么样构造SQL语句而已。
原帖:http://community.csdn.net/Expert/topic/5535/5535330.xml?temp=.8875543
相关文章:
-
2022-12-23
-
2022-12-23
-
2022-12-23
-
2021-10-13
-
2022-12-23
-
2022-12-23
-
2022-12-23
-
2022-12-23
猜你喜欢
-
2022-12-23
-
2021-12-24
-
2021-11-11
-
2022-12-23
-
2022-12-23
-
2021-04-03
-
2021-11-03
相关资源
-
下载
2023-02-19
-
下载
2021-06-06
-
下载
2021-06-06