下面的語句要實現的功能大家應該能夠看明白﹐只是由于語句錯誤﹐不能運行﹔
  其中﹕ Nh_InOut  和 Nh_Stock 是兩個有相互關聯的表﹐由字段Nh_InOut.IO_No和 Nh_Stock.Stock_no相互關聯﹔  我在統計完后按照Nh_InOut.IO_No再分組﹔
  現在語句總是抱錯﹐請問﹕我想實現下面的功能該怎么樣對該語句改進呢﹖SELECT  Nh_InOut.IO_No, Nh_InOut.IO_Type, Nh_InOut.IO_Name, Nh_InOut.IO_Spec,Nh_Stock.Stock_counts, SUM(Nh_InOut.IO_Input) AS Inputs, 
SUM(Nh_InOut.IO_Output) AS outputs, Nh_InOut.Out_Dept, Nh_Stock.Stock_no, 
Nh_Stock.Stock_counts + Nh_InOut.inputs - Nh_InOut.outputs AS NowStock
FROM Nh_InOut INNER JOIN Nh_Stock ON Nh_InOut.IO_No = Nh_Stock.Stock_no
GROUP BY  Nh_InOut.IO_No

解决方案 »

  1.   

    GROUP BY 的项目不够,要么就不要SUM()
      

  2.   

    不好意思 ﹐我簡化一下﹕
        
    SELECT 
        Nh_InOut.IO_No,Nh_InOut.IO_Name, Nh_InOut.IO_Spec, Nh_InOut.Out_Dept, 
        Nh_Stock.Stock_counts, SUM(Nh_InOut.IO_Input) AS Inputs, 
        SUM(Nh_InOut.IO_Output) AS outputs, 
        Nh_Stock.Stock_counts + Nh_InOut.IO_Input - Nh_InOut.IO_Output) AS NowStock
    FROM
        Nh_InOut INNER JOIN Nh_Stock ON Nh_InOut.IO_No = Nh_Stock.Stock_no
    GROUP BY  Nh_InOut.IO_No
      

  3.   

    to:  
     回复人: pingwing(pingwing)  
      我這些功能都想實現﹐有沒有其他簡單的辦法呀... 你說Group By 項目不夠﹐怎么解釋﹖謝謝
      

  4.   

    在SELECT 出现的非统计列,必须与GROUP BY  中的分组列对应。
    也就是:
    SELECT  Nh_InOut.IO_No, Nh_InOut.IO_Type, Nh_InOut.IO_Name, Nh_InOut.IO_Spec,Nh_Stock.Stock_counts, .......GROUP BY  Nh_InOut.IO_No, Nh_InOut.IO_Type, Nh_InOut.IO_Name, Nh_InOut.IO_Spec,Nh_Stock.Stock_counts你上面没对应,肯定会出错。
      

  5.   

    to: zhyanger()
         我试过你的方法同样会报group by错误,   我感觉到你说的太麻烦了, 我用Group by很多的; 我原来用的也没有这样啊,  当我想按照哪个字段值分组的话直接在group by后面跟上字段名就行了!  不知道这种多表统计会有哪些不同?  谢谢
      

  6.   

    确实是GROUP BY 的项目不够,你可以仔细的看看分组统计那部分内容以及聚合函数的使用
      

  7.   

    好吧,我的两个表的结构分别如下:  SQL SERVER2000数据库:
      Nh_InOut
         1 IO_Date   datetime 8
    0 IO_Flash       char 15
    0 IO_No    numeric 9
    0 IO_Type       char 30
    0 IO_Name       char 30
    0 IO_Spec       char 30
    0 IO_Unit       char 8
    0 IO_RUK       char 10
    0 IO_Price      float 8
    0 IO_Input     bigint 8
    0 IO_Output    bigint 8
    0 Out_Dept       char 14
    0 IO_Sig       char 4
    0 IO_Re       char 30
    Nh_Stock
    1 Stock_date datetime 8
    0 Stock_no    numeric 9 0
    0 Stock_ruk  char 6 0
    0 Stock_price float 8
    0 Stock_counts bigint 8
    0 Stock_cash money 8
      

  8.   

    SELECT  Nh_InOut.IO_No, SUM(Nh_InOut.IO_Input) AS Inputs, 
    SUM(Nh_InOut.IO_Output) AS outputs, SUM(Nh_Stock.Stock_counts + Nh_InOut.inputs - Nh_InOut.outputs) AS NowStock
    FROM Nh_InOut INNER JOIN Nh_Stock ON Nh_InOut.IO_No = Nh_Stock.Stock_no
    GROUP BY  Nh_InOut.IO_No看看能行吗?
      

  9.   

    to:   madyak(无天) 
       這個提示錯誤說Inputs 找不到﹐但是我把下面的這句去掉就可以用了。
     SUM(Nh_Stock.Stock_counts + Nh_InOut.inputs - Nh_InOut.outputs) 
                              AS NowStock
       但是上面的這句不能少。我看看用什么辦法可以讓他不抱錯
      

  10.   

    哦原来是这样,我没细看
    这样改:
    SELECT  Nh_InOut.IO_No, SUM(Nh_InOut.IO_Input) AS Inputs, 
    SUM(Nh_InOut.IO_Output) AS outputs, SUM(Nh_Stock.Stock_counts + Nh_InOut.input - Nh_InOut.output) AS NowStock
    FROM Nh_InOut INNER JOIN Nh_Stock ON Nh_InOut.IO_No = Nh_Stock.Stock_no
    GROUP BY  Nh_InOut.IO_No
      

  11.   

    還是抱同樣的錯﹐說找不到字段名﹕ inputs;  SUM(Nh_Stock.Stock_counts + Nh_InOut.input - Nh_InOut.output) AS NowStock
      上面一句不能這樣來﹐因為這樣違背了我已經統計的意思 ﹔我的意思 是對這樣的形式﹕
        Nh_Stock.Stock_counts+Sum(Nh_InOut.input)-Sum(Nh_InOut.Output) as NowStock
         我這樣寫你們應該明白我的意思 吧﹖多謝
      

  12.   

    你好好分析一下这两个表的关系,Nh_Stock.Stock_counts这个字段 如果不求和SUM它,    能和后面的Sum(...)进行运算吗?
      

  13.   

    SELECT dbo.Nh_InOut.IO_No, dbo.Nh_Stock.Stock_counts, SUM(dbo.Nh_InOut.IO_Input) 
          AS Inputs, SUM(dbo.Nh_InOut.IO_Output) AS outputs, 
          dbo.Nh_Stock.Stock_counts + SUM(dbo.Nh_InOut.IO_Input) 
          - SUM(dbo.Nh_InOut.IO_Output) AS NowStock 
    FROM dbo.Nh_InOut INNER JOIN
          dbo.Nh_Stock ON dbo.Nh_InOut.IO_No = dbo.Nh_Stock.Stock_no
    GROUP BY dbo.Nh_InOut.IO_No, dbo.Nh_Stock.Stock_counts