SELECT table2.*,
(SELECT Sum(qtde)
FROM table1
WHERE table1.cnes = table2.cnes
AND table1.procedimento = table2.procedimento
AND table1.mes = table2.mes
AND table1.ano = table2.ano
GROUP BY cnes,
procedimento,
ano,
mes) AS soma
FROM table2
このコードはAccessでうまく機能します。
2つのテーブルがあります。
表1には次の列があります。CNES, PROCEDIMENTO, MES, ANO, QTDE
このような情報が含まれている可能性があります(この事実を変更することはできません。別のソフトウェアから情報を取得します)
+------+--------------+-----+-----+------+
| CNES | PROCEDIMENTO | MES | ANO | QTDE |
+------+--------------+-----+-----+------+
| C1 | P1 | M1 | A1 | 12 |
| C1 | P1 | M1 | A1 | 3 |
| C1 | P1 | M1 | A1 | 5 |
| C1 | P2 | M1 | A1 | 4 |
| C1 | P2 | M1 | A1 | 4 |
| C1 | P2 | M1 | A1 | 3 |
| C1 | P3 | M1 | A1 | 4 |
| C2 | P2 | M1 | A1 | 5 |
| C2 | P2 | M1 | A1 | 4 |
| C2 | P1 | M1 | A1 | 3 |
+------+--------------+-----+-----+------+
QTDE =病院(CNES)からの1か月(MES)および1年(ANO)に行われた手順の量(PROCEDIMENTO)
したがって、1つの病院から1か月までの手順の量を知るには、すべての行を検索し、その月のすべての行を合計する必要があります...
表2には次の列があります。CNES, PROCEDIMENTO, NOME, MES, ANO, META
この表には、病院が1か月に実行する必要のある手順の数(META)と手順の実際の名前が含まれています(NOME。PROCEDIMENTOは数値ですが、string [code]として保存します)
したがって、Accessで機能する私のクエリは、上記の例からこれを実行します
Query1
+------+--------------+------+-----+-----+------+------------+
| CNES | PROCEDIMENTO | NOME | MES | ANO | META | SUM(QTDE) |
+------+--------------+------+-----+-----+------+------------+
| C1 | P1 | N1 | M1 | A1 | 23 | 20 |
| C1 | P2 | N2 | M1 | A1 | 20 | 11 |
| C1 | P3 | N3 | M1 | A1 | 04 | 4 |
| C2 | P2 | N2 | M1 | A1 | 05 | 9 |
| C2 | P1 | N1 | M1 | A1 | 01 | 3 |
+------+--------------+------+-----+-----+------+------------+
よく見ると、最後の列がその月の量の合計であることがわかります。これを使用して、病院がその月に予定されていた量の手順を実行したかどうかを確認できます。
それに加えて、私のクエリはそれを行いませんが、それができればいいのですが...%(SUM(QTDE)/ META)を表示するために別の列が必要になります。しかし、100%を超える%%を100%にする必要があります...そして、ゼロ除算の問題に注意する必要があります...。