0

このように Percentage を計算する列があります

Convert(decimal(5,2),(PatCount*100)/@PatientCount) as Per

ここで、上記の計算されたパーセンテージの合計が必要です。だから私はこれをやってみました、

,SUM(Convert(decimal(5,2),(PatCount*100)/@PatientCount)) as pa

しかし、私は Desired Result を得ていません。例えば

Per %    Total %
6.00     6.00
7.00     7.00
85.00    85.00

Col の合計を 98% として印刷します。誰かがこれを手伝ってくれませんか。

4

3 に答える 3

3

これを試して

SQL FIDDLE の例

select
    cast(PatCount * 100 / @PatientCount as decimal(5,2)) as Per,
    sum(cast(PatCount * 100 / @PatientCount as decimal(5,2))) over() as Total
from Patients as P
于 2012-10-26T17:08:43.490 に答える
0

いくつかのオプションがありますが、を使用すると、CROSS APPLYかなり優れたパフォーマンス特性が得られるはずです。

;WITH q AS (
  SELECT SUM(CONVERT(decimal(5,2),(PatCount*100)/@PatientCount)) as Per
  FROM   YourTable
)
SELECT CONVERT(decimal(5,2),(PatCount*100)/@PatientCount) as Per
       , q.Per
FROM   YourTable
       CROSS APPLY q

またはおそらくさらに良い(読むために)

;WITH q AS (
  SELECT CONVERT(decimal(5,2),(PatCount*100)/@PatientCount) as Per
  FROM   YourTable
)
SELECT q.Per, qtot.PerTot
FROM   q CROSS APPLY (SELECT SUM(Per) as PerTot FROM q) qtot
于 2012-10-26T17:09:03.387 に答える
0

合計が機能するには、GROUPBY が必要です。その後、合計はグループを超えています。

最も簡単なのは、これを別のクエリで行うことです。サブクエリでこれを行う方法があるかもしれませんし、累積合計を調べることもできます: MySQL で累積合計列を作成する

于 2012-10-26T16:55:22.577 に答える