以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQL表达式的写法请教 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90266) |
-- 作者:ap9709130 -- 发布时间:2016/9/8 15:52:00 -- SQL表达式的写法请教 有个表达试为: IIF(产品数量 > 5,产品数量/包装规格,1) 我想生成个新的列,列名为:件数 是根据表达式来决定的,如果产品数量 大于5 则为: 共(产品数量/包装规格)件,否则就是:共件
se lect IIF(产品数量 > 5,共(产品数量/包装规格)件,共1件) as 件数 from ..... 还是
在列名中怎么才能引用表达式啊?
|
-- 作者:有点蓝 -- 发布时间:2016/9/8 16:09:00 -- 没明白你的意思。 列表达式和sql是2回事,不能混用 列名只能输入字符,不能用表达式
|
-- 作者:ap9709130 -- 发布时间:2016/9/8 16:37:00 -- 有点蓝老师
我的意思是,件数列里的内容中如果要用到表达式,要怎么写,上在的例子,列名是:件数 但件数的内容是:共??件,其它??部分为表达式,这种情况要怎么写? |
-- 作者:ap9709130 -- 发布时间:2016/9/8 17:15:00 -- 我可能没写清楚,再写清楚点。
有个表达式A, 会根据条件产生一个整数,我现在想生成一个列,列的内容为:共A件,列名为:件数 ,不会写。
se lect 共“A”件 as 件数 from {} ... 如果是狐表,应该这样写:共" & A & "件 as 件数,SQL要怎么写? |
-- 作者:有点蓝 -- 发布时间:2016/9/8 17:16:00 -- IIF(产品数量 > 5,\'共\'+(产品数量/包装规格)+\'件\',\'共1件\') |
-- 作者:ap9709130 -- 发布时间:2016/9/8 22:02:00 -- 试了,会出错。说是整数和字符不能转换。“(产品数量/包装规格)” 这个表达式的结果是整数 试了好久都不行? 如果是狐表 就好处理了,\'共" & (产品数量/包装规格) & "件\'. SQL不会。 |
-- 作者:有点蓝 -- 发布时间:2016/9/8 22:19:00 -- IIF(产品数量 > 5,\'共\'+cstr(产品数量/包装规格)+\'件\',\'共1件\') |
-- 作者:ap9709130 -- 发布时间:2016/9/8 23:06:00 -- 研究了两天的SQL,现在语句没有出现错误,但是很奇怪,产生的表和实际情况不同,有的会多几行,有的不多,不知道怎么回事。请看下图,这是用狐表的方法产生的正确的库存表:
这是用SQL产生的表,第一个产品没有多,但第二个产品就多了5行,后面的也是,有的多了,有的没多,不知道怎么回事?
SQL的语句如下:
s e lect 入库时间,{物料信息表}.产品名称,{物料信息表}.包装规格,{库存明细表1}.产品批号,{库存明细表1}.产品数量,ROUND(票面价,2) as 票面价,IIF(成本价 > 0,ROUND(成本价 + ((s ele ct Sum(报销金额) from {报销明细表} where {报销明细表}.编号标注 = {订单明细表}.订单编号 and 销售 = 0)*{库存明细表1}.实收数量* IIF(成本价> 0,成本价,票面价))/({订单主表}.总金额 * 实收数量),2),ROUND(IIF(((S el ect Sum(报销金额) from {报销明细表} where {报销明细表}.编号标注 = {订单明细表}.订单编号 And 销售 = 0)*{库存明细表1}.实收数量* IIF(成本价> 0,成本价,票面价))/({订单主表}.总金额 * 实收数量)> 0,票面价 + ((S el ect Sum(报销金额) from {报销明细表} where {报销明细表}.编号标注 = {订单明细表}.订单编号 And 销售 = 0)*{库存明细表1}.实收数量* IIF(成本价> 0,成本价,票面价))/({订单主表}.总金额 * 实收数量),票面价),2)) as 成本价,IIF(成本价> 0,ROUND(成本价 * {库存明细表1}.产品数量,2),ROUND(票面价*{库存明细表1}.产品数量,2)) AS 库存金额,{订单明细表}.外币,{库存明细表1}.仓库名称,IIF({库存明细表1}.产品数量/{物料信息表}.包装系数> 1,ROUND({库存明细表1}.产品数量/{物料信息表}.包装系数,0),1) As 件数,{库存明细表1}._Identify FROM ((({库存明细表1} INNER JOIN {物料信息表} ON {库存明细表1}.MID = {物料信息表}._Identify) INNER JOIN {订单明细表} ON {库存明细表1}.订单编号 = {订单明细表}._Identify) INNER JOIN {报销明细表} ON {订单明细表}.订单编号 = {报销明细表}.编号标注) INNER JOIN {订单主表} ON {订单明细表}.订单编号 = {订单主表}._Identify where {库存明细表1}.所属公司 = \'aa\' And {库存明细表1}.产品数量 > 0 ORDER BY 产品名称,入库时间 希望高指点,不胜感激! |
-- 作者:有点蓝 -- 发布时间:2016/9/8 23:12:00 -- 除非导数据出来测试,否则没有办法判断 |
-- 作者:ap9709130 -- 发布时间:2016/9/8 23:20:00 -- 数据里第一个表是对的,第二个表里重复的都是多出来的。
像这类的SQL语句,怎么会生成克隆行呢?真奇怪! |