社区
MS-SQL Server
帖子详情
一个表里的一个NUMERIC型字段的值为NULL,怎么把它去掉!
cqnucsmoon
2003-12-10 04:56:06
如题,当用SET 字段=''肯定不行的,数据类型转换错误,不知道有没有办法?
...全文
160
11
打赏
收藏
一个表里的一个NUMERIC型字段的值为NULL,怎么把它去掉!
如题,当用SET 字段=''肯定不行的,数据类型转换错误,不知道有没有办法?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
a_stupid_boy
2003-12-10
打赏
举报
回复
update set 字段 =0 where 字段 is null
dlpseeyou
2003-12-10
打赏
举报
回复
定义成字符型,
cqnucsmoon
2003-12-10
打赏
举报
回复
update 表 set 字段 ='' where 字段 is null
这句是肯定不行的,因为这个字段是数值型的.
只想把显示为<NULL>的地方统统改为没有,即空白.
victorycyz
2003-12-10
打赏
举报
回复
是删掉还是改掉?
dlpseeyou
2003-12-10
打赏
举报
回复
update 表 set 字段 ='' where 字段 is null
CrazyFor
2003-12-10
打赏
举报
回复
不要让它等于空,那它只能等于0,只有字符型才可以等于:''
dlpseeyou
2003-12-10
打赏
举报
回复
IS [NOT] NULL
确定一个给定的表达式是否为 NULL。
语法
expression IS [ NOT ] NULL
参数
expression
是任何有效的 Microsoft® SQL Server™ 表达式。
NOT
指定布尔结果取反。谓词反转其返回值,值不为 NULL 时返回 TRUE,值为 NULL 时返回 FALSE。
结果类型
布尔型
返回代码值
如果 expression 的值是 NULL,则 IS NULL 返回 TRUE;否则,返回 FALSE。
如果 expression 的值是 NULL,则 IS NOT NULL 返回 FALSE;否则,返回 TRUE。
注释
若要确定表达式是否为 NULL,请使用 IS NULL 或 IS NOT NULL,而不要用比较运算符(例如 = 或 !=)。如果有一个参数为 NULL 或两个参数都为 NULL,那么比较运算符返回 UNKNOWN。
示例
在下面的示例中,对于所有预付款少于 $5,000 或者预付款未知(或为 NULL)的书,返回它们的书号及预付款。请注意,显示的结果是在示例 C 执行后所返回的那些结果。
USE pubs
SELECT title_id, advance
FROM titles
WHERE advance < $5000 OR advance IS NULL
ORDER BY title_id
cqnucsmoon
2003-12-10
打赏
举报
回复
马可,是这样的,假设我的表如下:
编号 姓名 成绩1 成绩2
001 张三 98 <NULL>
002 王五 <NULL> 85
因为成绩1或成绩2中有一个没有录入,但会产生一个<NULL>值,现在我想不置为0,让它为空,看起来如下:
编号 姓名 成绩1 成绩2
001 张三 98
002 王五 85
dlpseeyou
2003-12-10
打赏
举报
回复
delete 表名 where 字段 is null
lynx1111
2003-12-10
打赏
举报
回复
update tb set colname=null
txlicenhe
2003-12-10
打赏
举报
回复
1:
delete 表 where 字段 is null
2:
update 表 set 字段 = 0 where 字段 is null
jpivot学习总结.doc
1. jpivot加入其它应用中 解压jpivot.war 文件,在你的应用当中你需要下面的这些文件: /wcf/** /jpivot/** /WEB-INF/wcf/** /WEB-INF/jpivot/** /WEB-INF/lib/** 最后你还需要对比 jpivot.war 里的 web.xml 文件去修改你自己的 web.xml 文件。 2. 例子说明
一个
Schema的xml文件,定义立方体;(feeSchema.xml)
一个
jsp文件(fee.jsp),使用jpivot的标签(jp:mondrianQuery),写入多维查询表达式。 2.1. 数据库连接 直接用jdbc
在应用服务器中定义数据源
例子在tomcat中定义了数据源feeDS 2.2. 各种维度类
型
一般维度 例子中定义了维度:[term].[所有终端] 按终端id统计缴费情况。 多level维度 例子中定义了维度:[agentTerm].[所有终端] 按代理商,终端两级统计缴费情况 有父子关系维度 例子中定义了维度:[area].[所有地区] 按组织机构级别统计缴费情况 在定义父子级别时,要指定parentColumn和
null
ParentValue 且要定义Closure,如果不定义,指标钻取的数据有问题。 Closure表针对维度表计算distance,Closure表的生产参见例子中的存储过程sp_zycreateorgclosure 例如:
nullParentValue="
null
">
3. Mondrian Schema详解 3.1. Schema Schema 定义了
一个
多维数据库。包含了
一个
逻辑模
型
,而这个逻辑模
型
的目的是为了书写 MDX 语言的查询语句。这个逻辑模
型
实际上提供了这几个概念: Cubes (立方体)、维度( Dimensions )、层次( Hierarchies )、级别( Levels )、和成员( Members )。而
一个
schema 文件就是编辑这个 schema 的
一个
xml 文件。在这个文件中形成逻辑模
型
和数据库物理模
型
的对应。 3.2. Cube
一个
Cube 是一系列维度 (Dimension) 和度量 (Measure) 的集合区域。在 Cube 中, Dimension 和 Measure 的共同地方就是共用
一个
事实表。 Cube 中的有以下几个属性: 属性名 含义 name Cube 的名字 caption 标题 , 在表示层显示的 cache 是否对 Cube 对应的实表用 mondrian 进行存储 , 默认为 true enabled 是布尔
型
的 , 如果是被激活 ,Cubes 就执行 , 否则就不予理睬,默认为 true Cube 里面有
一个
全局的标签定义了所用的事实表的表名 3.3. Dimension 他是
一个
层次( Hierarchies )的集合 , 维度一般有其相对应的维度表 . 他的组成是由层次( Hierarchies )而层次( Hierarchies )又是有级别( Level )组成 . 其属性如下: 属性名 含义 name Dimension 的名称 type 类
型
,有两个可选的类
型
: StandarDimension 和 TimeDimension ,默认为 StandardDimension caption 标题 , 在表示层显示的 UsagePrefix 加前缀 , 消除歧义 foreignKey 外键,对应事实表中的
一个
列,它通过
元素中的主键属性连接起来。 3.4. Hierarchy 你一定要指定其中的各种关系 , 如果没有指定 , 就默认 Hierarchy 里面装的是来自立方体中的真实表 . 属性如下: 属性名 含义 name Hierarchy 的名称,该
值
可以为空,为空时表示 Hirearchy 的名字和 Dimension 的名字相同。当
一个
Dimension 有多个 Hierarchy 时,注意 name
值
要唯一。 hasAll 布尔
型
的 , 决定是否包含全部的成员 member allMemberName 所有成员的名字 , 也就是总的标题 , 例如: allMemberName= “全部产品” allLevelName 所有级别的名字,它会覆盖其下所有的 Member 的 name 和所有的 Level 的 name 属性的
值
。 allMemberCaption 例如 : allMemberCaption= “全部产品”这个是在表示层显示的内容 PrimaryKey 通过主键来确定成员,该主键指的是成员表中的主键,该主键同时要与 Dimension 里设置的 foreignKey 属性对应的
字段
形成外键对应关系 primaryKeyTable 如果成员表不只
一个
,而是多个表通过 join 关系形成的,那么就要通过这个属性来指明 join 的这些表中,哪
一个
与 Dimension 里设置的 foreignKey 属性形成外键关系。通过该属性来指明主表 caption 标题 , 在表示层显示的 defaultMember memberReaderClass 设定
一个
成员读取器,默认情况下 Hierarchy 都是从关系
型
数据库里读取的,如果你的数据不在 RDBMS 里面的话,你可以通过自定义
一个
member reader 来表现
一个
Hierarchy 。 3.5. Level 级别 , 他是组成 Hierarchy 的部分。属性很多,并且是 schema 编写的关键,使用它可以构成
一个
结构树, Level 的先后顺序决定了 Level 在这棵树上的的位置,最顶层的 Level 位于树的第一级,依次类推。 Level 的属性如下: 属性名 含义 name 名称 table 该 Level 要使用的表名 column 用上面指定的表中某一列作为该 Level 的关键字 nameColumn 用来显示的时候使用,如果不定义,那么就采用上面的 column 的
值
来进行显示。 oridinalColumn 定义该 Level 上的成员的显示顺序,如果不指定,那么采用 column 的
值
。 parentColumn 在
一个
有父 - 子关系的 Hierarchy 当中,当前 Level 引用的是其父成员的列名。好比是一张部门表,在一张
表里
表现部门的上下级关系,
一个
是主键,肯定还有
一个
字段
为连接到该主键的外键的列名,这里的 parentColumn 指的就是这个列名。
null
ParentValue 如果当前的 Level 是有上下级关系(设置了 parentColumn 属性),如果该 Level 又处于顶级,我们需要将顶级的数据取出来,这里指的是位于顶级的父成员的
值
,有些数据库不支持
null
, 那么也可以使用 ’0’ 或 ’-1’ 等,这就表示顶级的成员的父 ID 为 ’0’ 或为 ’-1’ 。 type 数据类
型
,默认
值
为 string 。当然还可以是
Numeric
、 Integer 、 Boolean 、 Date 等。 uniqueMembers 该属性用于优化产生的 SQL ,如果你知道这个级别和其父级别交叉后的
值
或者是维度表中给定的级别所有的
值
是唯一的,那么就可以设置该
值
为 true ,否则为 false 。 levelType 该 Level 的类
型
,默认为 regular (正常的),如果你在其 Dimension 属性 type 里选择了 TimeDimension 那么这里就可以选择 TimeYears 、 TimeQuarters 、 TimeMonth 、 TimeWeeds 、 TimeDays 。 hideMemberIf 在什么时候不隐藏该成员,可选的
值
有三个: Never 、 IfBlankName 、 IfParentName approxRowCount 该属性可以用来提高性能,可以通过指定
一个
数
值
以减少判断级别、层次、维度基数的时间,该属性在通过使用 XMLA 连接 Mondrian 很有用处。 caption 标题 , 在表示层显示的 captionColumn 用来显示标题的列 formatter 该属性定义了 Member.getCaption() 方法返回的动作
值
,这里需要是
一个
实现了 mondrian.olap.MemberFormatter 接口的类,用来对 Caption 地
值
进行格式化。 3.6. Join 对于
一个
Hierarchy 来说,有两种方式为其指定:一种是直接通过
一个
Table 标签指定;一种是通过 Join 将若干张表连接起来指定。一旦采用 Join 的话,那么就要在 Hierarchy 里的 primaryKeyTable 属性指定主表。 3.7. Measure Measure 就是我们要计算的数
值
,操作的核心。它的属性如下: 属性名 含义 name 名称 aggregator 要采用的计算函数 column 要计算的列名 formatString 计算结果的显示格式。 visible 是否可见 datatype 数据类
型
,默认为
Numeric
formatter 采用类来对该 Measure 的
值
进行格式,具体参考 Level 的 formatter 属性。 caption 标题,用来显示时使用。 4. JPivot标签库使用详解 4.1. Introduce JPivot 是一套基于 Mondrian 的 OLAP 前端展现工具,它提供了一套标签库来解决的 OLAP 的展现层问题。 在
一个
JSP 页面当中,如果要使用 JPivot 标签库,除了要配置相关的配置文件外,我们需要在 JSP 头的位置声明对 JPivot 标签库的引用,引用方法如下: <%@ taglib uri = "http://www.tonbeller.com/jpivot" prefix = "jp" %> JPivot 标签库包含以下几个标签: chart chooseQuery clickable destroyQuery mondrianQuery navitator print scalarQuery setParam table testQuery xmlaQuery 接下来我们将详细介绍这些标签的具体用法及相关参数的含义。 4.2. chart 创建
一个
图表组件,这个图表组件的标签不能直接产生可见输出,它必须通过 WCF 的渲染标签才行。 chart 标签的主要属性如下: 属性名 必须 数据类
型
是否能动态计算指定 描述 id 是 String 是 标签的 ID visible 否 boolean 是 用来设置该组件是否可见,当该属性为 false 时 WCF 标签半角不显示该组件。 role 否 String 是 Role 的名称,如: role=”tomcat” 就允许当前用户角色为 tomcat 的访问该控件, role=”!tomcat” 则就允许除角色为 tomcat 以外的所有的用户访问。 query 是 OlapModel 是
一个
mondrianQuery 标签的 ID
值
baseDisplayURL 否 String 是 显示图表的链接,链接的后面还要添加参数“ ?=filename=[ 临时图表文件的名称 ] ” controllerURL 否 String 是 链接到 JPivot Controller 的 URL ,该属性在一些复杂环境下比如 Portal 之类就很有用。 4.3. chooseQuery 从前面创建的若干个查询当中选择
一个
合适的查询(通过查询名称进行选择),例如:
SELECT ...
SELECT ...
...
它的属性比较简单,只有 id 和 queryName 两个,而且比较容易理解。 4.4. clickable 该标签的作用是给
一个
dimension 或
一个
level 里的所有的 members 加上超链,使得它们变的可以进行点击操作。生成的 URL 中包含这个 member 的唯一名称,这个标签必须要在
一个
table 或
一个
query 的标签里嵌套使用。 这个动作还依赖于该标签的 sessionParam 属性,如果该属性存在,那么参数
值
将在页面显示之前写到 com.tonbeller.jpivot.param.SessionParamPool 当中,如果不存在该属性,参数将会被编码到超链接当中。 例如:
select .. from Sales
该标签的主要属性如下: 属性名 必须 数据类
型
是否能动态计算指定 描述 urlPattern 否 String 是 该属性已过时,使用 page 属性替代它。 page 否 String 是 目标页面的名称,该属性的
值
必须要以“ / ”开始,如果不设置,那么会采用当前页面的名称。 uniqueName 否 String 是
一个
dimension 或 hierarchy 或 level 的唯一名称,用来标识哪个 member 将可以点击。 menuLabel 否 String 是 如果多次定义 clickable ,那么它将通过
一个
右键来进行显示,这里的
值
就是右键菜单的名称。 sessionParam 否 String 是 参数名称,它将会被回写到 com.tonbeller.jpivot.param.SessionParamPool 当中。 propertyName 否 String 是 该属性如果存在,该 member 属性的
值
将会被带到 com.tonbeller.jpivot.param.Parameter 的 sqlValue 的属性当中。 propertyPrefix 否 String 是 如果存在该属性,多个 SessionParam 将会被创建,每
一个
member 的名字的开始部分将采用该属性的
值
。 providerClass 否 String 是 如果存在该属性,这个类的实例将会从当前的 member 中获取 SessionParam 对象的实例,这里的类必须实现 com.tonbeller.jpivot.table.navi.ClickableMember.ParameterProvider 接口。 4.5. destroyQuery 该标签的主要作用是销毁所有的查询,它的用法如下:
它只有
一个
ID 属性。 4.6. mondrianQuery 该标签的主要作用是让 mondrian 执行指定的查询,该标签需要指定
一个
JDBC 的 datasource 或单独指定 JDBC 连接的各个属性从而可以让 mondrian 连接到指定的数据库。 它的用法如下:
select {[Measures].[Unit Sales], [Measures].[Store Cost], [Measures].[Store Sales]} on columns, {[Product].[All Products]} ON rows from Sales where ([Time].[1997])
它的主要属性如下: 属性名 必须 数据类
型
是否能动态计算指定 描述 id 是 String 是 标签的 ID jdbcDriver 否 String 是 要连接到目标数据库的驱动类名 jdbcUrl 否 String 是 目标数据库的 URL jdbcUser 否 String 是 登录数据库的用户名 jdbcPassword 否 String 是 登录数据库的密码 dataSource 否 String 是 可以连接到数据库的 JNDI 名称,如 jdbc/SampleDB ,当使用它时另外四个单独连接数据库的属性不可以再用。 catalogUri 是 String 是 Mondrian Schema 文件所在的路径,指定路径时需要从 web 应用的根开始,如 /WEB-INF/FoodMart.xml 。 role 否 String 是 指定角色,该角色的
值
来自 Mondrian Schema 里定义的角色。 dynResolver 否 String 是 指定
一个
用来解析 Mondrian Schema 里定义的动态变量的解析类。 connectionPooling 否 String 是 当该
值
为 false 时,将从连接池里阻止 Mondrian dynLocale 否 String 是 设置动态解析 Mondrian Schema 里的 Local dataSourceChangeListener 否 String 是 指定
一个
类用来检测 datasource 的变化。 queryName 否 String 是 这个属性允许保留多个查询,对于每
一个
查询,最后
一个
查询将会被存储下来,可以使用 chooseQuery 标签在查询间进行切换。 stackMode 否 boolean 是 如果设置为 false ,那么所有的查询将同时被处理;如果设置为 true ,那么将保持其原有的顺序,例如: 查询名称为 qn1 的创建后,标签就马上将其显示出来 ; 接下来创建 qn2 ,现在 stack 里有 qn1 和 qn2 , qn2 也将被显示出来。 4.7. navigator 创建
一个
导航组件,这个组件不会直接输出,它必须通过 WCF 的标签来 render 输出。 示例用法:
该标签的主要属性如下: 属性名 必须 数据类
型
是否能动态计算指定 描述 id 是 String 是 标签的 ID query 是 OlapModel 是 指定
一个
mondrianQuery 标签的名称 visible 否 boolean 是 设置该组件是否可见,如果设置为 false 那么 WCF 的 render 标签将不会 render 该组件。 role 否 String 是 角色的名称,可以加前缀“!”,表示“除 … 角色之外”都可以访问该组件,否则就是只有该角色才能访问该组件。 4.8. print 创建
一个
打印控件,该控件不能直接输出,你必须创建 WCF form 来调用打印的 servlet 来生成 XLS/PDF 文件。 该标签只有
一个
ID 属性。 4.9. scalarQuery 创建
一个
包含由单个单元格的组成的 OLAP 结果的会话属性,它的
值
由标签的属性提供。 示例用法:
formattedValue="#{some.bean.otherProperty}" caption="Some Caption" /> 它的主要属性如下: 属性名 必须 数据类
型
是否能动态计算指定 描述 id 是 String 是 标签的 ID value 是 String 是 是
一个
EL 的表达式,通过 EL 表达式来计算
值
,这里是
一个
数字。 formattedValue 否 String 是 用
一个
EL 表达式来计算格式化后的
值
,是
一个
字符串 caption 否 String 是 用
一个
EL 表达式来生成 caption 的
值
,这里是
一个
字符串 queryName 否 String 是 请参考 mondrianQuery 标签 stackMode 否 boolean 是 请参考 mondrianQuery 标签 4.10. selectProperties 创建
一个
选择属性的组件,该组件不会直接输出,必须要与 WCF 的 render 标签结合。 示例用法:
它的主要属性如下: 属性名 必须 数据类
型
是否能动态计算指定 描述 id 是 String 是 标签的 ID table 是 TableComponent 是 该属性用来指定
一个
表格组件。 visible 否 boolean 是 设置该组件是否可见,如果设置为 false 那么 WCF 组件将不会显示该组件。 role 否 String 是 指定角色,同样可以使用“!” 4.11. setParam 通过 get 或 post 或 session 里的
值
为 MDX 查询设置查询参数。示例用法:
SELECT ... Parameter("Param01", ... WHERE ...
or
它的主要属性如下: 属性名 必须 数据类
型
是否能动态计算指定 描述 query 是 OlapModel 是 指定
一个
mondrianQuery 标签的名称 httpParam 否 String 是 http 参数的名称,如果存在该属性,那么它的
值
将会被告解析并设置到 mdx 查询的 parameter 当中 sessionParam 否 String 是 Session 的参数名称 mdxParam 是 String 是 MDX 的 parameter 的名称 4.12. table 创建
一个
pivot 的表格组件,该组件要借助于 WCF 的 render 标签输出。 示例用法:
该标签的主要属性如下: 属性名 必须 数据类
型
是否能动态计算指定 描述 id 是 String 是 标签的 ID visible 否 boolean 是 设置组件是否可见,如果为 false 那么 WCF 的标签将不会将其 render 。 role 否 String 是 可访问该组件的角度,支持“!”用法 query 是 OlapModel 是 指定
一个
mondrianQuery 标签的名称 5. 多维查询表达式 5.1. 什么是 MDX MDX 的全称是 Mutil Dimensional Expressions ,是由 Microsoft , Hyperion 等公司研究多维查询表达式,是所有 OLAP 高级分析所采用的核心查询语言。 MDX 可以用来进行以下操作: 1. calculated members (计算成员) 2. Calculated Cells (计算单元) 3. Security Settion (安全设置) 4. Custom member formula ( 自定义函数 ) 5. Custom level rollup () 6. Actions (动作) 7. Named “ sets ” ( 命名集合 ) 8. Server side formatting (服务器数据格式化) 5.2. MDX 的基本结构 MDX 的基本结构有三种: Members 、 Tuple 、 Set 。 5.2.1. Members 指的是维度树上的
一个
节点,这里有一点需要指出,量度也是
一个
特殊的维度,所以对于普通维度上的 Member 可以有几下几种表示方法: [Customer] 或 [Time].[1996] 等,对于特殊的维度——量度而言,也可以表示
一个
Member ,如: [Measures].[ unit sales] 等。 Member 的表示方法就是用中括号的形式,“ [……] ”。 5.2.2. Tuple Tuple :是由若干个 Members 组成,每
一个
维度上最多只能有
一个
Member ,对于
一个
Tuple 而言至少有
一个
维度,多则不限,同时对于没有列出来的那就表示为默认的 Member 。 Tuple 的表示方法是小括号“ () ”,因为其又有 Member 构成,所以通常的格式为“ ([…],[…][…],…) ”;示例: a) ([Regin ].[USA]) b) ([product].[ computers],[time].[2008]) 。 5.2.3. Sets 同一维度上若干个 Members 的集合,或者是若干个 Tuples 的集合,但这里有
一个
地方需要注意,那就是如果是若干个 Tuple 组成的集合是,各个 Tuple 里的 Member 之间存在着一定的对应关系。集合的表示方法用大括号“ {} ”,所以可能的表示方法为: a) {[time].[2008],[time].[2009],[time].[2000]} ,这里 Set 是由同一维度的若干个 Member 组成。 b) {([computer],[usa ]),([ mobile],[china])} ,这个 Set 是由两个 Tuples 组成,这里大家可以看到,在第
一个
Tuple 当中,第
一个
Member 是名为 computer 的产品,所以后面的 Tuple 的第
一个
Member 也必须是
一个
产品,所以我们这里看到的是 mobile ,第
一个
Tuple 里第二个 Member 是
一个
国家,所以第二个 Tuple 的第二个 Member 也必须是
一个
国家名,依次类推。 5.3. MDX 查询语句
一个
标准的 MDX 查询语句就是由我们前面介绍的 MDX 的三个基本对象构成,也就是 Member 、 Tuple 、 Set 。
一个
标准的 MDX 查询的语法如下: SELECT Set ON COLUMNS, Set ON ROWS FROM Cube WHERE Tuple 示例: SELECT {[time].[ 1997],[time].[1998]} ON COLUMNS, {([product].[drink],[customer].[gender].[F]),( [product].[food],[customer].[gender].[M])} ON ROWS FROM [Sales] WHERE ([Measures].[ StoreSales ]) 这个 MDX 查询就表示:查询时间为 1997 和 1998 两年的 drink 类产品,女消费者和 food 类产品男消费者的 Store Sales 。 5.4. MDX 表达式 5.4.1. children 它的作用是列出指定分类下的所有项,如 1. [product type].[food].children ,这就表示列出产品类
型
为 food 的所有产品。 2. [region ].[country].children ,这就表示列出所有的国家名称。 该函数不能用在 Tuple 中 5.4.2. CurrentMember 当前某个 Member ,举例: 某个产品销售额贡献度计算,对于某
一个
产品或一种类
型
的产品而言它的销售额贡献度指的是它的销售额与所有产品销售额的比
值
,此时,如果我们要用 MDX 来计算这个贡献度的
值
是可以采用 CurrentMember 来实现,如: 此时我们的 MDX 表达可以是: ([product].currentMember ,[ Measures].[stores sales]) / ([product].[ all products],[Measures].[stores sales]) 同时因为默认情况下指的就是 currentMember ,所以上面的 currentMember 可以
去掉
: ([Measures].[ stores sales]) / ([product].[ all products],[Measures].[stores sales]) 所有 MDX 表达式的写法是由若干个 Tuple 组成 ,比如上面的这个表达式就是由两个 Tuple 的相除构成。 5.4.3. prevMember 和 nextMember 这两个元素分别指的是当前 Member 的上
一个
Member 和当前 Member 的下
一个
Member 。 利用这两个元素我们可以来实现实际当中常见的同期比(前期比),所谓的同期比指的 是: (当前 member- 当前 member 的前
一个
member ) / 当前 member 的前
一个
member 对应到 MDX 表达式我们可以用 prevMember 和 nextMember 来实现,如: (([time].currentMember ,[ Measures].[store sales])-([time].prevMember ,[Measures].[storessales ])) / ([time].prevMember ,[ Measures].[store sales]) 当然因为 currentMember 可以省略,所以上面的写法也可以是: (([ Measures ].[store sales])-([time].prevMember ,[Measures].[storessales ])) / ([time].prevMember ,[ Measures].[store sales]) 5.4.4. Parents 、 FirstChild 、 Descendants 下面的这张图就显示
一个
树 这张图中 all 这个节点是 97 和 98 的 parents , 97 和 98 也是 all 的 children ,同时 97 是 all 的 firstChild 如果我们要取到 97 下的所有的月份,那么我们就需要用 Descendants 来实现,它的语法是: Descendants( [time].[97],month) ,这里的 month 是
一个
level 的名称。所有它的格式为: Descendants([
一个
Member],
一个
level 的名称 ) 比如在食品销售当中,我们要知道哪一类的食品更受消费者欢迎,这样我们需要只知道各类食品的销量,比如食物( food )、饮料 (drink) 等的具体销量 (unit sales) ,然后再计算出所有食品总的销量( total sales ) , 如果采用 MDX 我们可以很容易的实现,采用 MDX 后的计算哪种食品更受欢迎的表达式如下: ([food].currentMember ,[ Measures].[unit sales]) / ([food].currentMember.parent ,[ Measures].[total sales]) 因为 currentMember 可以省略,所以上面的写法又可以是: ( [ Measures].[unit sales]) / ([food].currentMember.parent ,[ Measures].[total sales]) 5.5. 参见MDX的基本语法及概念.pdf 6. 常见问题 6.1. MDX编辑器中文乱码 web.xml中添加过滤器
Set Character Encoding
com.tonbeller.wcf.charset.CharsetFilter
encoding
UTF-8
Set Character Encoding
/*
注意,该filter-mapping放在所有filter-mapping的最前面 jsp页面编码用UTF-8(testpage.jsp) 6.2. pdf中文显示“#” 1).在WEB-INF\jpivot\print目录下建立userconfig.xml文件。内容如下:(仅配置黑体,fontBaseDir属性我也没有配置,源码中有)
2). 下载Apache的FOP包,应用所需JAR包,生成simhei.xml。Java命令行为: java -cp D:\op\fop.jar;D:\op\avalon-framework-4 .2.0.jar;D:\op\commons-logging-1.0.4.jar;D:\op\commons-io-1.1.jar;D:\op\xmlgraph ics-commons-1.4.jar org.apache.fop.fonts.apps.TTFReader C:\WINDOWS\Fonts\simhei. ttf simhei.xml 3). 将simhei.xml,以及simhei.ttf文件放到WEB-INF\jpivot\print目录下。 4 ). 修改WEB-INF\jpivot\table目录下的fo_mdxtable.xsl文件,把所有的font-family对应成SimHei,(以SimHei开头)。 6.3. pdf格式修改(原格式行太宽) 修改jpivot\WebRoot\WEB-INF\jpivot\table\fo_mdxtable.xsl 中font-size,line-height,padding 6.4. 钻取数据的格式化 在利用jpivot钻取的时候,发现出来的数字数据都精确到了小数点后两位,我可不想所有数字都这么精确,连带出来的id
值
也被这样格式化了,悲惨! 我的解决方法:取消格式定义 找到wcf.jar,修改com.tonbeller.wfc.format.config.xml 删除double和nandouble的定义 6.5. mondrian 的志的配置 将log4j.xml放置到web-inf/classes下 文件内容如下:
6.6. schema workbench schema的编辑器,界面化编辑schema。 但不知道为什么,在我的本机上,在打开,新建schema文件,都非常慢。 可以到http://sourceforge.net/projects/mondrian/files/下载,最新版本psw-ce-3.2.1.13885 7. 参考资料 http://mondrian.pentaho.com/documentation/ mondrian的官方网站 http://jacky6024.javaeye.com/ 比较有用的中文资料
Mysql数据库主要系统表说明
Mysql数据Mysql数据库主要系统表说明库主要系统表说明
一行SQL代码能做什么.docx
一行SQL代码能做什么.docx
3.关联表时出现
null
字段
在实际工作中,经常会遇到需要关联表的场景,常见的关联有左连接,右连接,内连接等。关联的时候需要做到对相应的关联
字段
做关联,避免出现数据发散。有时候会发现需要关联的
字段
有
null
的出现,那么假如两个表中关联
字段
出现
null
=
null
的情况,是否会对他进行关联呢? 验证开始: 建表: create table if not exists user1 ( id
numeric
(5), name ...
插入数据insert
插入数据insert 语法: Insert into 表名(
字段
1,
字段
2,
字段
3…)values(
字段
1的
值
。
字段
2的
值
,
字段
3的
值
…) 注意: (1) 前后
字段
个数 类
型
必须一样。 (2) 数
值
(整数,小数)布尔类
型
值
正常写;其他类
型
需要加上单引号“zsf” (3) 如果插入的
值
是空的
null
8.2.1正常的写法 插入数据:1,zsf18岁,男,1777722,90 Insert into tb_user(id,name,age,sex,tel,score)values(1,’zsf’,18
MS-SQL Server
34,837
社区成员
254,632
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章