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

SQL聚合函数的一个查询问题,急求!!!
SQL code
select CURRENCY_CenterUnit.ControlCord, CURRENCY_CenterUnit.BarCord, CURRENCY_Center.Title, CURRENCY_Center.Author, CURRENCY_Center.Publisher, CURRENCY_Center.ISBN, CURRENCY_Center.PublishDate, CURRENCY_CenterUnit.Price, CURRENCY_Center.LIBNum, CURRENCY_Center.LIBCord, CURRENCY_CenterUnit.LawInfo, count(distinct CURRENCY_CenterUnit.ControlCord) as 本数
from CURRENCY_CenterUnit,CURRENCY_Center
GROUP BY CURRENCY_CenterUnit.ControlCord
HAVING CURRENCY_CenterUnit.ControlCord=(select ControlCord from CURRENCY_CenterUnit where lawinfo='光盘库')



帮我看下这个哪里不对


报错显示:列 'CURRENCY_CenterUnit.BarCord' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

---------------------------------
其实就是这样的:

表A有多个列,表B有多个列
两个表都有对应的ControlCord列
表B的ControlCord列有重复,需要统计重复个数
同时显示表A和表B的几个列和显示表B的ControlCord列重复次数。这样的SQL查询应该怎么写呢?

------解决方案--------------------
SQL code
SELECT  CURRENCY_CenterUnit.ControlCord ,
        CURRENCY_CenterUnit.BarCord ,
        CURRENCY_Center.Title ,
        CURRENCY_Center.Author ,
        CURRENCY_Center.Publisher ,
        CURRENCY_Center.ISBN ,
        CURRENCY_Center.PublishDate ,
        CURRENCY_CenterUnit.Price ,
        CURRENCY_Center.LIBNum ,
        CURRENCY_Center.LIBCord ,
        CURRENCY_CenterUnit.LawInfo ,
        COUNT(DISTINCT CURRENCY_CenterUnit.ControlCord) AS 本数
FROM    CURRENCY_CenterUnit ,
        CURRENCY_Center
GROUP BY CURRENCY_CenterUnit.ControlCord ,
        CURRENCY_CenterUnit.BarCord ,
        CURRENCY_Center.Title ,
        CURRENCY_Center.Author ,
        CURRENCY_Center.Publisher ,
        CURRENCY_Center.ISBN ,
        CURRENCY_Center.PublishDate ,
        CURRENCY_CenterUnit.Price ,
        CURRENCY_Center.LIBNum ,
        CURRENCY_Center.LIBCord ,
        CURRENCY_CenterUnit.LawInfo
HAVING  CURRENCY_CenterUnit.ControlCord = ( SELECT  ControlCord
                                            FROM    CURRENCY_CenterUnit
                                            WHERE   lawinfo = '光盘库'
                                          )