以文本方式查看主题

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

--  作者:阿福
--  发布时间:2015/8/29 12:04:00
--  SQL语句的更改
再次麻烦老师帮我修改一下!!!!

cmd.CommandText = "select sys_user, 年, 母猪存栏数, 肉猪存栏数_年末, 肉猪存栏数_年初, 肉猪销售数 f rom" & _
"(Select sys_user, year(日期) As 年, avg(母猪_总) As 母猪存栏数, 0 As 肉猪存栏数_年末, 0 As 肉猪存栏数_年初, 0 As 肉猪销售数 f rom (select * f rom {母猪存栏结构}) as b where month(日期)= 12 group by sys_user, year(日期) u nion all " & _
"Select sys_user, year(日期), 0, 合计, 0 f rom{肉猪存栏结构} where month(日期) = 12 u nion all " & _
"Select sys_user, year(日期), 0, 0, 合计 f rom{肉猪存栏结构} where month(日期) = 1 u nion all " & _
"Select sys_user, year(销售_日期), 0, 0, 0, count(销售_日期) f rom {肉猪信息} group by year(销售_日期), sys_user) " & _
"As a where [sys_user] = \'" & user.Name & "\' group by year(日期), sys_user  order by year(日期), sys_user "

--  作者:有点蓝
--  发布时间:2015/8/29 12:07:00
--  
不是修改好了吗?把空格去掉?
--  作者:阿福
--  发布时间:2015/8/29 14:18:00
--  
不行的,错误提示

.NET Framework 版本:2.0.50727.8000
Foxtable 版本:2014.11.11.1
错误所在事件:
详细错误信息:
使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。


--  作者:阿福
--  发布时间:2015/8/29 14:30:00
--  
cmd.CommandText = "select sys_user, 年, 母猪存栏数, 肉猪存栏数_年末, 肉猪存栏数_年初, 肉猪销售数 f rom" & _
"(Select sys_user, year(日期) As 年, avg(母猪_总) As 母猪存栏数, 0 As 肉猪存栏数_年末, 0 As 肉猪存栏数_年初, 0 As 肉猪销售数 f rom (select * f rom {母猪存栏结构}) as b where month(日期)= 12 group by sys_user, year(日期) u nion all " & _
"Select sys_user, 日期, 0, 合计, 0, 0 f rom{肉猪存栏结构} where month(日期) = 12 u nion all " & _
"Select sys_user, 日期, 0, 0, 合计, 0 f rom{肉猪存栏结构} where month(日期) = 1 u nion all " & _
"Select sys_user, year(销售_日期), 0, 0, 0, count(销售_日期) f rom {肉猪信息} group by year(销售_日期), sys_user) " & _
"As a where [sys_user] = \'" & user.Name & "\' group by year(日期), sys_user  order by year(日期), sys_user "

.NET Framework 版本:2.0.50727.8000
Foxtable 版本:2014.11.11.1
错误所在事件:
详细错误信息:
列名 \'日期\' 无效。
列名 \'日期\' 无效。


--  作者:有点蓝
--  发布时间:2015/8/29 14:47:00
--  
水平有限,凭这个改不好,发列子上来测试一下
--  作者:阿福
--  发布时间:2015/8/29 15:34:00
--  
cmd.CommandText = "Select sys_user, 年, 母猪存栏数, 肉猪存栏数_年末, 肉猪存栏数_年初, 肉猪销售数 f rom" & _
"(Select sys_user, year(日期) As 年, avg(母猪_总) As 母猪存栏数, 0 As 肉猪存栏数_年末, 0 As 肉猪存栏数_年初, 0 As 肉猪销售数 f rom (select * f rom {母猪存栏结构}) as b where month(日期)= 12 group by sys_user, year(日期) u nion all " & _
"Select sys_user, year(日期), 0, 合计, 0, 0 f rom{肉猪存栏结构} where month(日期) = 12   u nion all " & _
"Select sys_user, year(日期), 0, 0, 合计, 0 f rom{肉猪存栏结构} where month(日期) = 1   u nion all " & _
"Select sys_user, year(销售_日期), 0, 0, 0, count(销售_日期) f rom {肉猪信息} group by sys_user, year(销售_日期))" & _
"as a group by 年, sys_user, 母猪存栏数, 肉猪存栏数_年末, 肉猪存栏数_年初, 肉猪销售数"

上面代码后,结果成下表
  sys_user  年   母猪存栏数   肉猪存栏数年末   肉猪存栏数年初   肉猪销售数  
   开发者      0   0   0   0
    开发者   2015   0   0   0   35
    开发者   2015   0   0   1000   0
    开发者   2015   0   1300   0   0
    开发者   2015   26   0   0   0
    






但我想变成这样的效果:
  sys_user  年   母猪存栏数   肉猪存栏数年末   肉猪存栏数年初   肉猪销售数  
   开发者      0   0   0   0
    开发者   2015  26   1300   1000   35



--  作者:有点蓝
--  发布时间:2015/8/29 15:38:00
--  
分组的时候只按年来分组
--  作者:阿福
--  发布时间:2015/8/29 15:44:00
--  
是的,需要同“年”和同“sys_user”成同一列
--  作者:有点蓝
--  发布时间:2015/8/29 15:47:00
--  
"as a group by 年, sys_user, 母猪存栏数, 肉猪存栏数_年末, 肉猪存栏数_年初, 肉猪销售数"
太多了,用2列就行了把sys_user后面的都去掉

--  作者:阿福
--  发布时间:2015/8/29 15:50:00
--  
我试过,错误提示

.NET Framework 版本:2.0.50727.8000
Foxtable 版本:2014.11.11.1
错误所在事件:
详细错误信息:
选择列表中的列 \'a.母猪存栏数\' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。