0

総計を取る MSSQL クエリがあります。これは、SUM を取ることによって得られる値の合計です。

   select
      s.name
     ,SUM(b.dAmount) as total
     ,SUM(SUM(b.dAmount)) as grandtotal
   from t_sales a
        left outer join t_cust b on (b.dId=a.id)
   where a.custId=@customerId
   GROUP BY b.name; 

名前と合計を取得できますが、grandtotal は値を返しません。別の値のSUMである値のSUMを取る正しい方法を教えてください.Thanks

4

3 に答える 3

1

これを試して:

 select
      b.name
     ,SUM(b.dAmount) as total
     , SUM(SUM(b.dAmount)) OVER () as grandtotal

   from t_sales a
        left outer join t_cust b on (b.dId=a.id)
   where a.custId=@customerId
   GROUP BY b.name; 
于 2013-09-15T23:22:48.063 に答える
0

これを試すこともできます

create table #t_sales (name varchar(100),amount numeric(18,2))  

INSERT INTO #t_sales (name,amount)
values  ('A',100.00)
    ,('B',200.00)
    ,('C',300.00)
    ,('C',400.00)

INSERT INTO #t_sales (name,amount)
values  ('A',100.00)
    ,('B',200.00)
    ,('C',300.00)
    ,('C',400.00)

SELECT CASE WHEN (GROUPING(name) = 1) THEN 'GRAND TOTAL'
        ELSE ISNULL(name, ' ')
   END AS [type]
   ,SUM(amount) AS TOTAL
FROM #t_sales
GROUP BY name WITH ROLLUP  
于 2013-09-16T01:28:02.373 に答える