0

これが私のコードです:

SELECT DataBaseUser.Agents, Abs(Sum([NoPPI1])) AS [NoPPI-1], Abs(Sum([NoPPI2])) AS [NoPPI-2], Abs(Sum([NoPPI3])) AS [NoPPI-3], Abs(Sum([NoPPI4])) AS [NoPPI-4], Abs(Sum([NoPPI5])) AS [NoPPI-5], Abs(Sum([NoPPI6])) AS [NoPPI-6], Abs(Sum([NoPPI1])+Sum([NoPPI2])+Sum([NoPPI3])+Sum([NoPPI4])+Sum([NoPPI5])+Sum([NoPPI6])) AS TotalNoPPI
FROM DataBaseUser INNER JOIN MainData ON DataBaseUser.ID = MainData.AgentDropDown
GROUP BY DataBaseUser.Agents;

このクエリを機能させるために、基本的に、クエリは各販売代理店のNoPPI1からNoPPI6までの合計を合計します。私が抱えている問題は、たとえば今月はNoPPI1に何らかのフィルターが必要であり、NoPPI2はたとえば2か月前の日付フィルターが必要なことです。

これは可能ですか?

ありがとう


アップデート

現時点での結果は次のようになります。

Agents | NoPPI1 | NoPPI2 | NoPPI3 | NoPPI4 | NoPPI5 | NoPPI6 |
--------------------------------------------------------------
Ash    | 34     | 32     | 17     | 12     | 4      | 1      |
Kate   | 45     | 23     | 15     | 9      | 2      | 0      |

など。|

日付を制御するフィールドはNoPPIDate1などです。

だから私が達成しようとしているのは:

NoPPI1を合計し、absしてから日付でフィルタリングする必要があります。次に、他の日付についても同じですが、日付が異なります。

前もって感謝します

4

1 に答える 1

0

最初に行うことは、UNIONクエリを使用してテーブルを正規化することです。これにより、より詳細な制御が可能になります。

SELECT Agent, "NoPPI1" As Description, NoPPI1 As NoPPI,  NoPPI1Date As NoPPIDate
FROM Table
UNION
SELECT Agent, "NoPPI2" As Description, NoPPI2 As NoPPI,  NoPPI2Date As NoPPIDate
FROM Table
<...>

その後、より簡単に選択できます。

SELECT Agent, Sum(NoPPI) FROM UnionQ
WHERE NoPPIDate=#2012/12/31#
GROUP BY Agent
于 2012-08-15T10:18:36.663 に答える