select a.WebSiteHostID,
(select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
b.ADProductID,
 (select count(*) from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as CountSameNum 
from WebSiteHostOrders a
inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductIDwhere WebSiteHostID=1
group by a.WebSiteHostID,b.ADProductID

解决方案 »

  1.   

    select WebSiteHostID  WebUserName  ADProductID, CountSameNum=count(1)
    (
    select a.WebSiteHostID,
    (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
    b.ADProductID
    from WebSiteHostOrders a
    inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
    where WebSiteHostID=1
    ) t
    group by WebSiteHostID  WebUserName  ADProductID
      

  2.   

    1 楼的大大查出来是:--------------------------------------------------------------
    WebSiteHostID  WebUserName  ADProductID   CountSameNum 
        1              aaa           9            1 
        1              aaa           10           1 
    --------------------------------------------------------------第一行 CountSameNum 应该是 2 啊...2 楼的大大   ............额,反正不对...
      

  3.   

    select a.WebSiteHostID, 
    (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName, 
    b.ADProductID, 
     (select count(*) from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID and ADProductID=b.ADProductID) as CountSameNum  
    from WebSiteHostOrders a 
    inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID where WebSiteHostID=1 
    group by a.WebSiteHostID,b.ADProductID这样呢?
      

  4.   

    Count() 的应该是 相同的 ADProductID   
      

  5.   

    如果是 sql 2005;WITH
    DATA AS(
    select 
    a.WebSiteHostID,
    (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
    b.ADProductID
    from WebSiteHostOrders a
    inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
    where WebSiteHostID=1
    ),
    RE1 AS(
    -- 去除相同的 ADProductID (楼主的意思没太看懂, 因为不知道  ADProductID 之外其他列如何处理)  
    SELECT DISTINCT
    WebSiteHostID, WebUserName, ADProductID
    FROM DATA
    )
    SELECT
    *
    FROM RE1
    CROSS APPLY(
    -- Count() 相同的 ADProductID 
    SELECT CountSameNum = COUNT(*)
    FROM DATA
    WHERE ADProductID = RE1.ADProductID
    )B
      

  6.   

    2000 的话, 只是多用子查询而已SELECT
    *,
    CountSameNum = (
    SELECT COUNT(*)
    FROM(
    select 
    a.WebSiteHostID,
    (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
    b.ADProductID
    from WebSiteHostOrders a
    inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
    where WebSiteHostID=1
    ) DATA
    WHERE ADProductID = RE1.ADProductID)
    FROM(
    -- 去除相同的 ADProductID (楼主的意思没太看懂, 因为不知道  ADProductID 之外其他列如何处理)  
    SELECT DISTINCT
    WebSiteHostID, WebUserName, ADProductID
    FROM(
    select 
    a.WebSiteHostID,
    (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
    b.ADProductID
    from WebSiteHostOrders a
    inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
    where WebSiteHostID=1
    ) DATA
    )RE1
      

  7.   

    1楼的大大 WebSiteHost表中没有 ADProductID ,WebSiteHost表是与 WebSiteHostOrders 表 联系起来才知道的。2楼的大大:真的不对...米看错...我帮你小改下:select WebSiteHostID,WebUserName,ADProductID, CountSameNum=count(1)
    (
        select a.WebSiteHostID,
        (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
        b.ADProductID
        from WebSiteHostOrders a
        inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        where WebSiteHostID=15

    group by WebSiteHostID  WebUserName  ADProductID
    还是报:    服务器: 消息 156,级别 15,状态 1,行 10
               在关键字 'group' 附近有语法错误。
      

  8.   

    1楼的大大 WebSiteHost表中没有 ADProductID ,WebSiteHost表是与 WebSiteHostOrders 表 联系起来才知道的。 
    ------
    对..你连一下试试.我看错了.
      

  9.   

    -- 去除相同的 ADProductID (楼主的意思没太看懂, 因为不知道  ADProductID 之外其他列如何处理)  其实就是 ADProductID 列 如果有相同的 就只流一条。也就是该ADProductID 列 所在的表 GetProducts 可以留相同 ADProductID 中GetProductID最小或最大的。注:GetProductID为 表GetProducts  自增主键。还有您的sql查出来的是:-------------------------------------------------------------- 
    WebSiteHostID  WebUserName  ADProductID   CountSameNum  
        1              aaa           9            0
        1              aaa           10           0  
    -------------------------------------------------------------- 
      

  10.   


    我直接复制你结果的字段名,之间忘了加逗号了,抱歉:select WebSiteHostID  WebUserName  ADProductID, CountSameNum=count(1)
    (
        select a.WebSiteHostID,
        (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
        b.ADProductID
        from WebSiteHostOrders a
        inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        where WebSiteHostID=1
    ) t
    group by WebSiteHostID,WebUserName,ADProductID
      

  11.   

    select WebSiteHostID,WebUserName,ADProductID,CountSameNum=count(1)
    (
        select a.WebSiteHostID,
        (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
        b.ADProductID
        from WebSiteHostOrders a
        inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        where WebSiteHostID=1
    ) t
    group by WebSiteHostID,WebUserName,ADProductID
      

  12.   

    select WebSiteHostID,WebUserName,ADProductID,CountSameNum=count(1)
    from 
    (
        select a.WebSiteHostID,
        (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
        b.ADProductID
        from WebSiteHostOrders a
        inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        where WebSiteHostID=1
    ) t
    group by WebSiteHostID,WebUserName,ADProductID小楼少了一个from 
      

  13.   

    select *,CountSameNum=count(1) from 
    (select a.WebSiteHostID,
    (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
    b.ADProductID
    from WebSiteHostOrders a
    inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
    where WebSiteHostID=1)a
    group by WebSiteHostID,WebUserName,ADProductID
      

  14.   

    其实我想要的是:----------------------------------------------------------------------------- WebSiteHostID  WebUserName  ADProductID   CountSameNum  OutPrice   TotalPrice
        1              aaa           9            2            4.0000    8.0000
        1              aaa           10           1            5.0000    5.0000----------------------------------------------------------------------------- 现在 邹建大大... 给的方法 我小改下:SELECT
        *,    
        CountSameNum = (
                SELECT COUNT(*)
                FROM(
                    select 
                        a.WebSiteHostID,
        c.OutPrice,  -- 加个字段  
                        (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
                        b.ADProductID
                    from WebSiteHostOrders a
                        inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        inner join ADProduct c on a.ADProductID=c.ADProductID --加了张表
                    where WebSiteHostID=15
                ) DATA
                WHERE ADProductID = RE1.ADProductID)
       
    FROM(
        
        SELECT DISTINCT
            WebSiteHostID, WebUserName, ADProductID,OutPrice
        FROM(
                select 
                a.WebSiteHostID,
        c.OutPrice,
                (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
                b.ADProductID
            from WebSiteHostOrders a
                inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        inner join ADProduct c on a.ADProductID=c.ADProductID
            where WebSiteHostID=15
        ) DATA
    )RE1实现了:
    -------------------------------------------------------------------------
    WebSiteHostID  WebUserName  ADProductID   CountSameNum   OutPrice   
        1              aaa           9            2            4.0000    
        1              aaa           10           1            5.0000    ----------------------------------------------------------------------------- 但关键还是在求和啊.... 只要OutPrice*CountSameNum 就可以了。   本以为 加个字段 求和很简单...但现在 牛人写的东西,偶不知道怎么用 CountSameNum 了。帮看看啊...真是.....失败。
      

  15.   

    WebSiteHostID 我调试的时候是15 , 这上面应该是 1 。
      

  16.   

    怎么把 GetProducts 中的 OutPrice 加上去显示,并让 OutPrice*CountSameNum  as 给 TotalPrice ??
      

  17.   


    select WebSiteHostID,WebUserName,ADProductID,CountSameNum=count(1),OutPrice,c.OutPrice*CountSameNum as TotalPrice 
    from 
    (
        select a.WebSiteHostID,
        (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
        b.ADProductID,
        c.OutPrice
        from WebSiteHostOrders a
        inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        inner join ADProduct c on a.ADProductID=c.ADProductID
        where WebSiteHostID=15
    ) t
    group by WebSiteHostID,WebUserName,ADProductID
    这个样子不好使啊...
      

  18.   

    select a.WebSiteHostID,
    (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
    b.ADProductID into #T
    from WebSiteHostOrders a
    inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductIDwhere WebSiteHostID=1select WebsiteHostID,WebUserName,ADProductID,count(AdProductID) as CountSameNum from #T
     group by WebsiteHostID,WebUserName,ADProductID
      

  19.   

    如果你的 OutPrice 是表 GetProducts 中的列的话,那要根据上述统计求TotalPrice的话,可能会出错,因此我猜想你的 GetProducts 表可能是这样的:
    WebDmainNameID ADProductID OutPrice
    1                9              4.0000
    2                9              6.0000
    3                10             5.0000
    而WebSiteHostID表可能是这样的:
    WebSiteHostID  WebDomainNameID  ADProductID
    1                     1              9
    1                     2              9
    1                     3              10
    可能无法根据你提供的那个连接语句再求总的 TotalPrice,因为,相同的ADProductID可能有不同的OutPrice.
      

  20.   

    这个 CountSameNum 无效啊。
    SELECT
        *,    
        CountSameNum = (
                SELECT COUNT(*)
                FROM(
                    select 
                        a.WebSiteHostID,
        c.OutPrice,
                        (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
                        b.ADProductID
                    from WebSiteHostOrders a
                        inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        inner join ADProduct c on a.ADProductID=c.ADProductID
                    where WebSiteHostID=15
                ) DATA     
                WHERE ADProductID = RE1.ADProductID), 
                CountSameNum*OutPrice as TotalPrice --列名 'CountSameNum' 无效。         
    FROM(
        
        SELECT DISTINCT
            WebSiteHostID, WebUserName, ADProductID,OutPrice
        FROM(
                select 
                a.WebSiteHostID,
        c.OutPrice,
                (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
                b.ADProductID
            from WebSiteHostOrders a
                inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        inner join ADProduct c on a.ADProductID=c.ADProductID
            where WebSiteHostID=15
        ) DATA
    )RE1
    不应该啊....这是怎么回事啊????????????
      

  21.   

    楼上的兄弟,OutPrice 是表 ADProduct 中的一个 ADProductID 一个OutPrice...不会有问题的。
      

  22.   

    出来了....晕...如此恶心罗嗦的方法....
    SELECT
        *,    
        CountSameNum = (
                SELECT COUNT(*)
                FROM(
                    select 
                        a.WebSiteHostID,
        c.OutPrice,
                        (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
                        b.ADProductID
                    from WebSiteHostOrders a
                        inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        inner join ADProduct c on a.ADProductID=c.ADProductID
                    where WebSiteHostID=15
                ) DATA 
                WHERE ADProductID = RE1.ADProductID),
         TotalPrice = (
                SELECT COUNT(*)
                FROM(
                    select 
                        a.WebSiteHostID,
        c.OutPrice,
                        (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
                        b.ADProductID
                    from WebSiteHostOrders a
                        inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        inner join ADProduct c on a.ADProductID=c.ADProductID
                    where WebSiteHostID=15
                ) DATA 
                WHERE ADProductID = RE1.ADProductID)*OutPrice
                --CountSameNum*OutPrice as TotalPrice 
         --OutPrice*CountSameNu as TotalPrice    
    FROM(
        
        SELECT DISTINCT
            WebSiteHostID, WebUserName, ADProductID,OutPrice
        FROM(
                select 
                a.WebSiteHostID,
        c.OutPrice,
                (select WebUserName from WebSiteHost where WebSiteHost.WebSiteHostID=a.WebSiteHostID) as WebUserName,
                b.ADProductID
            from WebSiteHostOrders a
                inner join GetProducts b on a.WebDomainNameID= b.WebDomainNameID and a.ADProductID=b.ADProductID
        inner join ADProduct c on a.ADProductID=c.ADProductID
            where WebSiteHostID=15
        ) DATA
    )RE1
      

  23.   

    最好你能把这些表的定义给出来,不然的话很难准确的给定合适的SQL语句。