Foxtable(狐表)用户栏目专家坐堂 → SQL表达式的写法请教


  共有3630人关注过本帖树形打印复制链接

主题:SQL表达式的写法请教

帅哥哟,离线,有人找我吗?
ap9709130
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
SQL表达式的写法请教  发帖心情 Post By:2016/9/8 15:52:00 [显示全部帖子]

有个表达试为: IIF(产品数量 > 5,产品数量/包装规格,1)  我想生成个新的列,列名为:件数   是根据表达式来决定的,如果产品数量 大于5 则为: 共(产品数量/包装规格)件,否则就是:共件

 

se lect  IIF(产品数量 > 5,共(产品数量/包装规格)件,共1件)  as 件数 from .....  还是

 

在列名中怎么才能引用表达式啊?

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2016/9/8 16:37:00 [显示全部帖子]

有点蓝老师

 

我的意思是,件数列里的内容中如果要用到表达式,要怎么写,上在的例子,列名是:件数   但件数的内容是:共??件,其它??部分为表达式,这种情况要怎么写?


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2016/9/8 17:15:00 [显示全部帖子]

我可能没写清楚,再写清楚点。

 

有个表达式A, 会根据条件产生一个整数,我现在想生成一个列,列的内容为:共A件,列名为:件数 ,不会写。

 

se lect 共“A”件  as 件数 from {} ...   如果是狐表,应该这样写:共" & A & "件 as 件数,SQL要怎么写?


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2016/9/8 22:02:00 [显示全部帖子]

试了,会出错。说是整数和字符不能转换。“(产品数量/包装规格)” 这个表达式的结果是整数   试了好久都不行? 如果是狐表 就好处理了,'共" & (产品数量/包装规格) & "件'. SQL不会。

 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2016/9/8 23:06:00 [显示全部帖子]

研究了两天的SQL,现在语句没有出现错误,但是很奇怪,产生的表和实际情况不同,有的会多几行,有的不多,不知道怎么回事。请看下图,这是用狐表的方法产生的正确的库存表:

 


图片点击可在新窗口打开查看此主题相关图片如下:正确的.png
图片点击可在新窗口打开查看

 

 

这是用SQL产生的表,第一个产品没有多,但第二个产品就多了5行,后面的也是,有的多了,有的没多,不知道怎么回事?


 


图片点击可在新窗口打开查看此主题相关图片如下:不正确.png
图片点击可在新窗口打开查看

 

SQL的语句如下:

 

s e lect 入库时间,{物料信息表}.产品名称,{物料信息表}.包装规格,{库存明细表1}.产品批号,{库存明细表1}.产品数量,ROUND(piao面价,2) as piao面价,IIF(成本价 > 0,ROUND(成本价 + ((s ele ct Sum(报销金额) from {报销明细表} where {报销明细表}.编号标注 = {订单明细表}.订单编号 and 销售 = 0)*{库存明细表1}.实收数量* IIF(成本价> 0,成本价,piao面价))/({订单主表}.总金额 * 实收数量),2),ROUND(IIF(((S el ect Sum(报销金额) from {报销明细表} where {报销明细表}.编号标注 = {订单明细表}.订单编号 And 销售 = 0)*{库存明细表1}.实收数量* IIF(成本价> 0,成本价,piao面价))/({订单主表}.总金额 * 实收数量)> 0,piao面价 + ((S el ect Sum(报销金额) from {报销明细表} where {报销明细表}.编号标注 = {订单明细表}.订单编号 And 销售 = 0)*{库存明细表1}.实收数量* IIF(成本价> 0,成本价,piao面价))/({订单主表}.总金额 * 实收数量),piao面价),2)) as 成本价,IIF(成本价> 0,ROUND(成本价 * {库存明细表1}.产品数量,2),ROUND(piao面价*{库存明细表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 产品名称,入库时间

希望高指点,不胜感激!


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2016/9/8 23:20:00 [显示全部帖子]

数据里第一个表是对的,第二个表里重复的都是多出来的。

 

像这类的SQL语句,怎么会生成克隆行呢?真奇怪!


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2016/9/8 23:37:00 [显示全部帖子]

找到问题了,如果把这句删除: INNER JOIN {报销明细表} ON {订单明细表}.订单编号 = {报销明细表}.编号标注

 

就可以了!多谢有点蓝老师!问题都解决了!

 


 回到顶部
帅哥哟,离线,有人找我吗?
ap9709130
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1470 积分:11456 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2016/9/12 15:01:00 [显示全部帖子]

现在又有新问题了,我上面的工作都是想动态生成一张库存表,并自动核算其成本。上面的语句没有问题了。但是,上面的语句只能显示实际通过订单采购入库存的原料,因为关联了几个表,只要是从采购渠道里来的库存原料都可以显示。

 

但库存表里面有几种情况不是从采购来的,第一是:刚上系统时,盘点库存的初始原料,第二是,有时候从客户那里借来的。所以,库存表里有这两种不是从采购单里来的原料不能显示。库存表里有个订单编号的列,这些原料里订单编号是:空的。

 

而从采购编号里来的原料 这个编号不是空的。怎么才能把库存表里的数量大于零的原料显示在一张表里? SQL 语句要怎么写?多谢!


 回到顶部