【发布时间】:2013-03-20 21:51:12
【问题描述】:
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 中运行良好。
我有两张桌子。
Table1 有以下列: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) 一个月 (MES) 和一年 (ANO) 完成的手术数量 (PROCEDIMENTO)
所以要知道从一家医院到一个月的手术数量,我需要搜索所有行并将该月的所有行求和...
Table2 有以下列:CNES, PROCEDIMENTO, NOME, MES, ANO, META
此表包含医院在一个月内需要执行的程序数量(META)和程序的实际名称(NOME.PROCEDIMENTO 是一个数字,但我将其存储为字符串 [code])
所以我在 Access 中工作的查询将从上面的示例中执行此操作
查询1
+------+--------------+------+-----+-----+------+------------+
| 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%……而且我需要小心除以零问题……
【问题讨论】:
-
您的问题是什么?你有什么问题?而且,您使用的是哪个数据库,Access 还是 MySQL?
-
我想要 MySQL 的代码我只在 Acess 中工作的查询