有这样一个视图如下,我把氟石膏、脱硫石膏、外加剂等材料表的“shuifen”列合成在一个表中。但经常添加新的材料表,我怎样做才能让新加的材料表的“shuifen”列自动统计进入这个视图呢?
CREATE VIEW dbo.shuzihua
AS
SELECT view_a.MaterialName, view_a.NetWeight, view_a.OutTime,
bbb.shuifen
FROM (SELECT weighid, [shuifen]
FROM [氟石膏]
WHERE isdel = 0
UNION ALL
SELECT weighid, [shuifen]
FROM [脱硫石膏]
WHERE isdel = 0
UNION ALL
SELECT weighid, [shuifen]
FROM [外加剂]
WHERE isdel = 0
) bbb INNER JOIN
view_a ON
view_a.id = bbb.weighid
CREATE VIEW dbo.shuzihua
AS
SELECT view_a.MaterialName, view_a.NetWeight, view_a.OutTime,
bbb.shuifen
FROM (SELECT weighid, [shuifen]
FROM [氟石膏]
WHERE isdel = 0
UNION ALL
SELECT weighid, [shuifen]
FROM [脱硫石膏]
WHERE isdel = 0
UNION ALL
SELECT weighid, [shuifen]
FROM [外加剂]
WHERE isdel = 0
) bbb INNER JOIN
view_a ON
view_a.id = bbb.weighid
解决方案 »
- SQL2000数据库 收缩数据库的问题...只经行修改查询...已经用backup log清空了日志...也用DBCC SHRINKDATABASE ...
- 这个sql查询语句怎么写?
- 请问如何查询两字段相加小于50的记录?
- 这个SQL语句怎么写?
- 开发中大型网站是选用sql server2000还是mysql更为合适?
- sql2005 兼容问题
- 真得搞不懂??????
- BULK INSERT命令,当文件里的日期为2005-12-8 00:00:00倒入不了,为2005-12-08 00:00:00可以,有什么办法呀!!!
- 在视图中建个源表中没有,但根据源表计算出来的字段
- 分区表的聚集索引
- 一个简单问题
- 插入错误: 列名或所提供值的数目与表定义不匹配。
每张表中存放各自的化验结果数据,他们是根据view_a表的'materialid'列统一起来的
但不太好。
还是加一个材料总表来记录所有材料比较好。
氟石膏
id shuifen
----------------
1 1.6
3 2.4
脱硫石膏
id shifen
-----------------
2 3.7
5 2.6
外加剂
id shuifen
-----------------
4 1.9
6 3.5view_a
id MaterialName, NetWeight
----------------------------------
1 氟石膏 13.5
2 脱硫石膏 56.3
3 氟石膏 45.2
4 外加剂 23.6
5 脱硫石膏 25.8
6 外加剂 29.8
例如:
-----------
表名 material_name
氟石膏
脱硫石膏
外加剂
...以后添加表的时候也把相应的表名填写在这里,视图取数据的时候用动态语句来这张表里取表名。最好的方法是建立一个明细表,主表放材料名,细表放这些材料的数据材料主表(id1,材料名)
材料细表(id2,id1,数据1,数据2...)id1在细表中是外键
----------------------
1,氟石膏
2,脱硫石膏
3,外加剂
材料细表(id2,id1,NetWeight )
---------------------------
1,1,13.5
2,1,45.2
3,2,56.3
4,2,25.8
5,4, 23.6
6,4, 29.8
然后再如何建立一个视图,实现“水分”的统计?
我的是aql2000……
declare my_cursor cursor for
select table_name from all_table--收集表名declare @table_name nvarchar(50)
declare @sql nvarchar(4000)
set @sql=''
set @table_name =''open my_cursor
fetch next from my_cursor
into @table_name
while @@fetch_status =0
begin
set @sql = @sql + 'select id as weighid, shuifen from '+@table_name + ' union all 'fetch next from my_cursor
into @table_name
endclose my_cursor
deallocate my_cursordeclare @sql1 nvarchar(4000)
set @sql1 =substring(@sql,1,len(@sql)-10)
exec (@sql1)