【发布时间】:2017-09-08 16:40:32
【问题描述】:
我正在查询以获得这些结果:
Concept | Variety 1 | Variety 2 | Variety 3
-------- | ---------- | --------- | ---------
Stage 1 | 125.23 | 142.32 | 154.00
State 2 | 100.00 | 100.00 | 100.00
我有 2 个数据库来获得这些结果,这个查询给了我这个结果
查询:
SELECT A.Etapa as CEtapa
, Sum(P.Import) + Sum(P.HExtras) + Sum(P.Importunidades) as Total
FROM Percepciones as P
, [\SYS21\Camel\COSTOS.MDB].Lotes as L
, [\SYS21\Camel\COSTOS.MDB].Actividades as A
WHERE P.Apl2__ = L.Numero
AND P.Apl3__ = A.Numero
GROUP BY A.Etapa
ORDER BY A.Etapa
结果:
Concept | Variety 1
-------- | ----------
Stage 1 | 125.23
State 2 | 100.00
问题是我有 N 数量的品种,我需要查询来做到这一点,我正在使用 .NET 来显示这些结果。所以我想,“为什么不创建一个循环来添加每个品种。”但是,我遇到的问题是它们没有按阶段计算,这是我的测试查询:
SELECT A.Etapa as CEtapa
,(SELECT Total
FROM (SELECT Sum(P.Import) + Sum(P.HExtras) + Sum(P.Importunidades) as Total
FROM Percepciones as P
, [\SYS21\Camel\COSTOS.MDB].Lotes as L
, [\SYS21\Camel\COSTOS.MDB].Actividades as A
WHERE L.Numero = P.Apl2__
AND Variedad = L.Variedad
AND P.Apl3__ = A.Numero
)
) as Variedad1
FROM Percepciones as P
, [\SYS21\Camel\COSTOS.MDB].Lotes as L
, [\SYS21\Camel\COSTOS.MDB].Actividades as A
WHERE P.Apl2__ = L.Numero
AND P.Apl3__ = A.Numero
GROUP BY A.Etapa
我会在 .Net 上循环连接的内容是:
SELECT Total
FROM (SELECT Sum(P.Import) + Sum(P.HExtras) + Sum(P.Importunidades) as Total
FROM Percepciones as P
, [\SYS21\Camel\COSTOS.MDB].Lotes as L
, [\SYS21\Camel\COSTOS.MDB].Actividades as A
WHERE L.Numero = P.Apl2__
AND Variedad = L.Variedad
AND P.Apl3__ = A.Numero
)
) as Variedad1
遗憾的是,这在每个阶段都给了我相同的结果,因为我没有比较 WHERE 子句中的阶段,因为我不知道如何在子查询上使用主查询中的阶段。
任何想法将不胜感激。
【问题讨论】:
-
我不是专家,但这看起来像是透视查询的工作。
-
显示示例原始数据。每个阶段可以有多个品种? CROSSTAB 查询需要 3 个字段。可能需要使用 DCount() 为每个阶段组生成序列 ID。该计算字段将是 ColumnHeader。
-
@June7 每个阶段可以有n个品种,也有n个阶段。