日期:2014-05-19  浏览次数:20575 次

动态设置sql语句实现定制报表
准备做一个动态的可定制的报表查询工具。
一个表内储存定制的信息,字段名,及表名,及是否最大值,是否group等信息,格式如下:

CREATE   TABLE   [ItemSet]   (
[itemno]   [int]   NOT   NULL   ,
[itemname]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   ,
[itemtablename]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   ,
[itemfieldname]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   ,
[isGrouped]   [int]   NULL   ,--是否group
[isMaxed]   [int]   NULL   ,--是否取最大
[isIncreased]   [int]   NULL     --是否取差值
)   ON   [PRIMARY]
GO

或者说格式如下:
CREATE   TABLE   [ItemSet]   (
[itemno]   [int]   NOT   NULL   ,
[itemname]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   ,
[itemtablename]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   ,
[itemfieldname]   [varchar]   (50)   COLLATE   Chinese_PRC_CI_AS   NULL   ,
[itemattrib]   [smallint]   NULL           --0,1,2,3来表示字段的属性,是否取最大值,是否group等。  
)   ON   [PRIMARY]
GO
大家提下意见哪种更合理一点。


还有,怎样处理这样的表可以取得想要的查询结果呢???
似乎一句sql已经处理不了了,请大家帮帮忙,提提意见,谢谢

------解决方案--------------------
用视图或存储过程实现
------解决方案--------------------
不知楼主想要什么结果
个人觉得第一种比较合理
------解决方案--------------------
用存储过程拔
------解决方案--------------------
个人感觉
第一种比较合理,直观. 如果想节省点空间,用2也是可以的,不过没必要

想要什么结果就不知道也
------解决方案--------------------
USE pubs
GO
SELECT MAX(ytd_sales)
FROM titles
GO

Here is the result set:

-----------
22246

(1 row(s) affected)

差值就不知道了,视图,存储过程,函数,都可以吧