当前位置: 代码迷 >> VB Dotnet >> vb sql语句有关问题
  详细解决方案

vb sql语句有关问题

热度:142   发布时间:2016-04-25 02:00:56.0
vb sql语句问题
本帖最后由 yinbiankcd 于 2015-09-02 15:53:45 编辑
Dim sqlS48O As String = "SELECT SUM([S48日产油]) AS 总产量 FROM 产量表  WHERE S48日期<#1999/6/7#;"
        Dim sqlS48W As String = "SELECT SUM([S48日产水]) AS 总产量 FROM 产量表  WHERE S48日期<#1999/6/7#;"
        Dim sqlT40O As String = "SELECT SUM([T40日产油]) AS 总产量 FROM 产量表  WHERE T40日期<#2006/5/5#;"
        Dim sqlT40W As String = "SELECT SUM([T40日产水]) AS 总产量 FROM 产量表  WHERE T40日期<#2006/5/5#;"
如何把这四句合并成一句
比如Dim sqlAs String = "SELECT SUM([S48日产油]),SUM([S48日产水]),SUM([T40日产油]) ,SUM([T40日产水])    AS 总产量 FROM 产量表  WHERE S48日期<#1999/6/7#;,  WHERE S48日期<#1999/6/7#;, WHERE T40日期<#2006/5/5#;,WHERE T40日期<#2006/5/5#;"
这样并不对 意思是这个意思
  就是 前边不同的SUM 要对用不同的WHERE
还是 一个sql语句只能有一个查询条件
我的数据库用法好像很非主流哈哈
不选择相同的选择条件是因为 每口井的生产开始时间 和中间的终断什么的都有区别
要不就把所有的井的生产时间都从1997年开始 后边的数据弄成0这样时间就统一了 但是原始数据量很大 不好处理
前边有人说加and 那是不是每个数据都要满足所有的条件
但 我这个的意思就是  各个井对应自己的生产日期  和别的井没关系
上次操作失误 没给你分 这次多给你点@  running_crazy  
额还有一点 那个时间要人为输入的 不是要固定的写在代码里 就是在一个文本框中输入截止时间  代码里是不是要这样#“&textbox1.text&”#  但是这样好像不行         不知道我说明白我的意思了没
------解决思路----------------------
你这样几个不同的东西完全可以放在四张表里,没必要放在一张表里,一张表里的内容是都有相互关系的,你的表里几个好像没有什么关系, 而且查询的时候Where后面的条件是针对前面所有的查询的,并不能不同的条件对应不同的查询.
TextBox输入当成一个字符串输入就行了
下面两种情况都可以

  Dim sql As String = "SELECT SUM([产量(吨)]) AS 总产量  FROM 产量表 WHERE 日期<#" + TextBox1.Text + "#;"
 Dim sql As String = String.Format("SELECT SUM([产量(吨)]) AS 总产量  FROM 产量表 WHERE 日期<#{0}#;", TextBox1.Text)

------解决思路----------------------
表设计不合理,把日产水、日产油等合并成一个字段,然后用一个类型字段
做成4条记录,外键关联另一个表的公共数据。
------解决思路----------------------
日数据表应该转化为(井ID,日期,产油,产水,注水)
再加个井信息表(井ID,生产日期)
    SELECT a.井ID,
           SUM(b.产油) 总产油,
           SUM(b.产水) 总产水
      FROM 井信息表 a
 LEFT JOIN 日数据表 b
        ON a.井ID = b.井ID
       AND a.日期 < b.生产日期
     WHERE a.井ID IN ('T40','S48')
  GROUP BY a.井ID
  相关解决方案