以文本方式查看主题

-  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=116337)

--  作者:czy66ds
--  发布时间:2018/3/23 7:42:00
--  关于SQL语句的使用
设SQL是一条sql语句,希望再加上一列,我这样做:
sql = " *,新列 from(" & sql & ")"
经测试,不行。怎样才能行?

--  作者:huangfanzi
--  发布时间:2018/3/23 8:12:00
--  
你这所谓增加一列是指增加一个原来table表中没有的列还是指已经有的列,如果是没有的列,可以用下面语句:

s elect cdate(\'2017-01-01\') as 测试1, cdbl(0) as 测试2 from {表A}
 
除了逻辑列不能处理,其余的类型都基本能转换的

--  作者:有点甜
--  发布时间:2018/3/23 8:46:00
--  

要像2楼那样写代码

 

sql = " *, \'\' As 新列 from(" & sql & ")"


--  作者:czy66ds
--  发布时间:2018/3/23 9:31:00
--  

谢谢。

我实际上是想添加商品表中的已有列“标准价”:

sql = " s elect  *,标准价 from (" & sql & ") as a INNER JOIN {商品表} on {商品表}.条码 = a.条码"

但是没有通过。

这样写法有何问题吗?


--  作者:有点甜
--  发布时间:2018/3/23 9:33:00
--  

你用 Select * 的时候,就加上了所有的列了,为什么要额外写?

 

 


--  作者:czy66ds
--  发布时间:2018/3/23 9:46:00
--  
因为原表中没有“标准价”列
--  作者:czy66ds
--  发布时间:2018/3/23 9:49:00
--  
就是(" & sql & ")中没有标准价列
--  作者:有点甜
--  发布时间:2018/3/23 9:50:00
--  
以下是引用czy66ds在2018/3/23 9:46:00的发言:
因为原表中没有“标准价”列

 

1、如果商品表有,肯定能带出来

 

2、如果商品表没有,那不可能自动生成


--  作者:czy66ds
--  发布时间:2018/3/23 10:05:00
--  

 

我贴出全部代码吧,帮我看一下:

代码目的:创建结存表

 

Dim sql As String
Dim f1 As String ="where 店铺 = \'**万达LT\'"
Dim f2 As String =" where 店铺 = \'**万达LT\' AND 日期 >=\'2018-02-01\' And 日期 <= \'2018-02-28\'"
sql = "s elect  店铺,条码,本月结存 As 上月结存,0 As 入库,0 As 出库, 0 As 销售  from {结存表}  f1 union all " & _
"s elect  店铺,条码,0,数量,0,0  from {@入库记录表}  f2 union all " & _
"s elect  店铺,条码,0,0,数量,0  from {@出库记录表}  f2 union all " & _
"s elect  店铺,条码,0,0,0,数量  from {@销售记录表}  f2 "
sql = sql.Replace("f1",f1)
sql = sql.Replace("f2",f2)
sql = sql.Replace("@","乐町")
sql = " s elect  店铺,条码,sum(上月结存) as 上月结存,sum(入库) as 入库 ,sum(出库) as 出库,sum(销售) as 销售,(sum(上月结存)+sum(入库)-sum(出库)-sum(销售)) as 本月结存 from (" & sql & ") As a group by 店铺,条码  ORDER BY 店铺,条码"

 

\'----到此为止,代码正确。下面要添加商品表中存在的标准价列,但是报错了


sql = " s elect  *, 标准价 from (" & sql & ") as a inner join {@商品表} on {@商品表}.条码 = a.条码 "
sql = sql.Replace("@","乐町")
MessageBox.Show(sql)
Dim T1 As Table = e.Form.Controls("Table1").Table
T1.Fill(sql,"gsjcc",True)


--  作者:有点甜
--  发布时间:2018/3/23 11:19:00
--  

这样的sql语句有没有问题?

 

sql = " select  * from (" & sql & ") as a inner join {@商品表} as b on b.条码 = a.条码 "

 

这样呢?

 

sql = " select a.*, b.标准价 from (" & sql & ") as a inner join {@商品表} as b on b.条码 = a.条码 "

[此贴子已经被作者于2018/3/23 11:19:18编辑过]