日期:2014-05-17  浏览次数:20494 次

两个sql问题
本帖最后由 benaheng 于 2013-04-09 17:30:26 编辑
问题1

select a.Accounts, a.erjidaili, o.ticheng2, o.Accounts AS Expr1, SUM(o.ticheng2) AS fandian2 from
 QPTreasureDB.dbo.OnLineOrder o,QPAccountsDB.dbo.AccountsInfo a where o.OrderStatus='2' and o.Accounts=a.Accounts and a.erjidaili='test100' 
GROUP BY a.Accounts, a.erjidaili, o.ticheng2, o.Accounts


上面这条sql语句 我用到了SUM函数  但是得到的结果跟我想要的不一样  我想要的结果是 统计符合条件的数据
但是这个条语句是把符合条件的筛选出来了 并没有统计 如下图所示




问题2

表一:userid  cid
表二 userid cid  cname  wid 
表三 wid  wname


我想表一和表二的数据关联起来查询 并且 表二和表三的也关联起来

现在用的是 表一.userid= 表二.userid  and 表二的wid=表三.wid
这样的话 表三有5条数据 只能提取出5条  我是想把表一和表二有多少条数据提多少条数据 并且把表三符合条件的数据也提取出来

------解决方案--------------------
第一个问题,因为你group by了4个字段,而这4个字段何在一起,就是单独的一行,所以其实是sum了,但是都是每行sum,这里可能需要改成子查询先sum然后带出其他字段
------解决方案--------------------
不知道你要查什么,你看看是不是你想要的
SELECT  Accounts ,
        erjidaili ,
        o.ticheng2 ,
        Expr1 ,
        fandian2
FROM    ( SELECT    a.Accounts ,
                    a.erjidaili ,
        --o.ticheng2 ,
                    o.Accounts AS Expr1 ,
                    SUM(o.ticheng2) AS fandian2
          FROM      QPTreasureDB.dbo.OnLineOrder o ,
                    QPAccountsDB.dbo.AccountsInfo a
          WHERE     o.OrderStatus = '2'
                    AND o.Accounts = a.Accounts
                    AND a.erjidaili = 'test100'
          GROUP BY  a.Accounts ,
                    a.erjidaili ,
        --o.ticheng2 ,
                    o.Accounts
        ) a
        INNER JOIN QPTreasureDB.dbo.OnLineOrder o ON o.Accounts = a.Accounts