Foxtable(狐表)用户栏目专家坐堂 → ft中直接用sql语句查询输出数据时用临时表会查询不到数据


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

主题:ft中直接用sql语句查询输出数据时用临时表会查询不到数据

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


加好友 发短信
等级:八尾狐 帖子:1938 积分:17793 威望:0 精华:0 注册:2014/7/29 19:09:00
ft中直接用sql语句查询输出数据时用临时表会查询不到数据  发帖心情 Post By:2019/9/29 10:40:00 [显示全部帖子]

如下面的语句,有时就是临时查询一些数据出来用,但如果每个地方都使用子查询感觉太长,很乱,想用临时表却查询不到数据,也没提示错误
IF OBJECT_ID('tempdb..#temp1') IS NOT NULL
    DROP TABLE #temp1; 
            
SELECT  a.*
INTO    #temp1
FROM    ( SELECT    事业部名称 ,
                    客户 ,
                    a.产品编码 ,
                    CAST(SUM(出货金额) AS DECIMAL(18, 2)) AS 出货金额 ,
                    SUM(a.累计出货) AS 出货数量
          FROM      ( SELECT    a.事业部名称 ,
                                a.客户 ,
                                a.产品编码 ,
                                SUM(数量) AS 累计出货 ,
                                SUM(金额) AS 出货金额 ,
                                0 AS 退货金额
                      FROM      ( SELECT    c.事业部名称 ,
                                            a.客户 ,
                                            a.进出日期 ,
                                            a.产品编码 ,
                                            数量 ,
                                            数量 * ISNULL(单价, 0) AS 金额
                                  FROM      ( SELECT    b.收货单位 AS 客户 ,
                                                        b.出库日期 AS 进出日期 ,
                                                        a.产品编码 ,
                                                        数量
                                              FROM      销售出库明细 a
                                                        INNER JOIN 销售出库单 b ON a.出库单号 = b.出库单号
                                              UNION ALL
                                              SELECT    b.收货单位 AS 客户 ,
                                                        b.出库日期 AS 进出日期 ,
                                                        a.产品编码 ,
                                                        数量
                                              FROM      其他出库明细 a
                                                        INNER JOIN 其他出库单 b ON a.出库单号 = b.出库单号
                                              WHERE     出库类别 = '销售出货'
                                            ) a
                                            LEFT JOIN 客户 c ON a.客户 = c.客户简称
                                            LEFT JOIN 销售单价 d ON a.产品编码 = d.产品编码
                                ) a
                      WHERE     a.进出日期 >= '2019-01-01'
                                AND a.进出日期 <= '2019-09-30'
                      GROUP BY  a.事业部名称 ,
                                a.客户 ,
                                a.产品编码
                      UNION ALL
                      SELECT    a.事业部名称 ,
                                a.客户 ,
                                a.产品编码 ,
                                SUM(数量) AS 累计出货 ,
                                SUM(金额) AS 出货金额 ,
                                0 AS 退货金额
                      FROM      ( SELECT    c.事业部名称 ,
                                            b.收货单位 AS 客户 ,
                                            b.出库日期 AS 进出日期 ,
                                            a.产品编码 ,
                                            数量 ,
                                            数量 * ISNULL(单价, 0) AS 金额
                                  FROM      销售出库单金龙明细 a
                                            INNER JOIN 销售出库单金龙 b ON a.出库单号 = b.出库单号
                                            LEFT JOIN 客户 c ON b.收货单位 = c.客户简称
                                            LEFT JOIN 销售单价 d ON a.产品编码 = d.产品编码
                                ) a
                      WHERE     a.进出日期 >= '2019-01-01'
                                AND a.进出日期 <= '2019-09-30'
                      GROUP BY  a.事业部名称 ,
                                a.客户 ,
                                a.产品编码
                    ) a
          GROUP BY  事业部名称 ,
                    客户 ,
                    a.产品编码
        ) a;

        
SELECT  a.* ,
        b.品名 ,
        b.规格 ,
        CAST(a.出货数量 / ( SELECT  SUM(出货数量)
                        FROM    #temp1
                      ) * 100 AS DECIMAL(18, 2)) AS 数量占比 ,
        CAST(a.出货金额 / ( SELECT  SUM(出货金额)
                        FROM    #temp1
                      ) * 100 AS DECIMAL(18, 2)) AS 金额占比
FROM    #temp1 a
        LEFT JOIN dbo.产品编码 b ON b.产品编码 = a.产品编码
ORDER BY 出货金额 DESC ,
        a.出货数量 DESC;

在foxtable中增加了个窗口,一个文本框一个查询按钮,将上述代码复制到文本框后查询不出数据,查询按钮的代码如下
Dim sql As String = e.Form.Controls("TextBox1").Value
If sql > "" Then
    Dim cmd As New SQLCommand
    cmd.ConnectionName = Mydata
    cmd.CommandTimeOut = 300
    cmd.CommandText = sql
    Dim dt As DataTable = cmd.ExecuteReader
    Tables(e.Form.name & "_Table1").DataSource = dt
    Tables(e.Form.name & "_Table1").AutoSizeCols
End If
在上面的查询语句直接在sql数据库上执行是没有问题的,除了直接将红色临时表替换成子查询外还有没有其他方法实现?

 回到顶部