已有23人关注
case when ... then ....语句能不能对数值格式化呢?
发表在VB答疑区 2008-03-26
是否精华
版块置顶:
<P>老师,您好!</P>
<P>&nbsp;&nbsp;&nbsp; 请教:</P>
<P>SELECT 物品,(CASE 部门&nbsp; &nbsp;WHEN&nbsp;&nbsp;'经理室' THEN 数量 END) AS 经理室,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(CASE 部门&nbsp; &nbsp;WHEN&nbsp;&nbsp;'财务部' THEN 数量 END) AS 财务部,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(CASE 部门&nbsp; &nbsp;WHEN&nbsp;&nbsp;'管理部' THEN 数量 END) AS 管理部<BR>FROM 表1 GROUP BY 物品</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; 我虽然语句这样写运行没有出错,我想对数量进行格式化,但是总是说格式化函数不对,我是这样写的:"format((case 部门 when '经理室' then 数量 end),'&amp;&amp;&amp;') as 经理室",不知该如何改进?谢谢!!!</P>
分享到:
精彩评论 4
vbsoldier
学分:0 LV1
2008-03-27
沙发
<P>你好:格式化请使用以下代码:</P>
<P>"format((case 部门 when '经理室' then 数量 end),'000') as 经理室"</P>
rjl0663
学分:0 LV1
2008-03-28
板凳
<P>老师:您好!</P>
<P>&nbsp;&nbsp;&nbsp; 我的数据库是SQL2000,所以我是这样格式化的:</P>
<P>sql = "select 物品,(rtrim(CONVERT(decimal,(case 部门 when '经理室' then&nbsp;数量 end))) + 备注) as 经理室,(rtrim(CONVERT(decimal,(case when 部门='财务部' then&nbsp;数量 end))) + 备注) as&nbsp;财务部 " _<BR>&nbsp; &nbsp; &amp; "from 表1 order by 物品"</P>
<P>但是运行结果相同的物品却显示成多行,举例如下:<BR></P>
<P><STRONG>表1 结构如下:</STRONG></P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
<P>物品&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 部门&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 备注</P>
<P>面巾&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经理室&nbsp;&nbsp;&nbsp;<BR>茶&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 经理室</P>
<P>面巾&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 财务部&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (部长2)</P>
<P>茶。。。。。。。。<BR></P></BLOCKQUOTE>
<P dir=ltr><STRONG>运行结果:</STRONG></P>
<P>&nbsp;&nbsp;&nbsp; 物品&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经理室&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;财务部<BR>&nbsp;&nbsp;&nbsp;&nbsp;面巾&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; null<BR>&nbsp;&nbsp;&nbsp;&nbsp;面巾&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5(部长2)<BR>&nbsp;&nbsp;&nbsp;&nbsp;茶&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null<BR>&nbsp;&nbsp;&nbsp;&nbsp;茶&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; null&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;。。。。<BR></P>
<P><FONT color=#1a1ae6><STRONG><FONT size=4>我的意思应该显示为:</FONT></STRONG><BR>&nbsp;&nbsp;&nbsp; 物品&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经理室&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;财务部<BR>&nbsp;&nbsp;&nbsp; 面巾&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5(部长2)</FONT></P>
<P><FONT color=#1a1ae6>&nbsp;&nbsp;&nbsp;</FONT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;。。。。。。<BR>&nbsp;&nbsp;&nbsp; <BR><BR>如果不合并上备注字段,运行就正确,原来是“ + 备注”在作怪,各部门的备注有可能不同,为什么这样加上去就会这样呢?该如何处理!!!!!</P>
<P>&nbsp;&nbsp;&nbsp; 请老师指导,谢谢!<BR></P>
vbsoldier
学分:0 LV1
2008-03-30
地板
<P>您好,因为与NULL进行运算或连接返回值都为NULL,所以需要使用ISNULL函数将空值转换为其它字符串。</P>
<P>解决方法:isnull(备注,'')</P>
rjl0663
学分:0 LV1
2008-04-02
4L
<P>谢谢老师的指导。最后还要多加一个聚集函数才把问题解决了。</P>
<P>结贴吧。</P>
首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照