0

View 获得前三列。totalCount我需要在获得总计数的视图中再添加一列 ( ):

CId CCId CCount  totalCount
1      a      3         6
1      a      3         6
1      b      3         6
1      c      3         6
2      b      2         6
2      b      2         6
2      a      2         6
2      a      2         6
3      v      1         6

如何获得totalCountas 6?

(业务规则为 Cid=1 Ccount=3 Cid=2 Ccount=2 Cid=3 Ccount=1 所以totalCount =3+2+1 =6)

4

3 回答 3

1

有了这段代码,我得到了想要的结果:

select CId
      ,CCId
      ,CCount
      ,(select SUM(a.tcount) 
          from (select distinct CId ,CCount as tcount
       from  dbo.Test) as a ) totalcount
from dbo.Test
于 2013-01-16T15:52:48.937 回答
1
SELECT  a.CID, a.CCID, a.CCOUNT,
        b.TotalCount
FROM    Table1 a, (SELECT SUM(DISTINCT cCOunt) TotalCount 
                   FROM Table1) b

更新

正如 Andomar 在评论中指出的那样,已对查询进行了更新,

SELECT  a.CID, a.CCID, a.CCOUNT,
        b.TotalCount
FROM    Table1 a, 
(
  SELECT SUM(TotalCount) TotalCount
  FROM
  (
      SELECT MAX(cCOunt) TotalCount 
      FROM Table1
      GROUP BY CId
   ) c
) b
于 2013-01-16T15:01:45.993 回答
0

从您的示例数据中,我假设 aCid只能有一个,可能重复的值CCount。在这种情况下,您可以使用 a 选择一个随机的(例如maxgroup by,并且sum

select  sum(OneCCCount) as TotalCount
from    (
        select  max(CCount) as OneCCCount
        from    YourTable
        group by
                CId
        ) as SubQueryAlias
于 2013-01-16T14:54:10.803 回答