0

MS Access 上の SQL で問題が発生しました。

問題は、人が同じ週に 2 つの異なる部門、または販売チャネル、エリア マネージャー名、またはその両方に属しているため、重複する可能性がある週です..

私は何をしたいですか?同じ週の総インバウンドなど(70種類あります)の合計金額が大きい場合に合計したい..

すばらしい、なんとかそれができました、しかし、決定された週に合計インバウンドと作成されたSRが等しい場合、その週が複製されます..ここにそれを置く3番目の値がありません.最初の値を使用するかもしれませんが、私はしません.方法がわからない.. :/

誰でもそれを管理する方法を知っていますか?

SQL Fiddle(www.sqlfiddle.com) でサンプルを作成して、より迅速に解決できるようにしました。:)

CREATE TABLE Raw 
    (
     NTLogin varchar(20), 
     FiscalWeek int,
     FiscalMonthName varchar(20),
     FiscalQuarter varchar(20),
     SalesChannel varchar(20),
     Location varchar(20),
     Department varchar(20),
     Queue varchar(20),
     FunctionalName varchar(30),
     QueueStatus varchar(20),
     ManagerName varchar(20),
     SRCreated int,
     TotalInbounds int,
     Responses int,
     RDHits int
    );

INSERT INTO Raw
(NTLogin, FiscalWeek, SalesChannel, Department, Queue, FunctionalName, QueueStatus,
ManagerName, SRCreated, TotalInbounds, Responses, RDHits, FiscalMonthName,
FiscalQuarter, Location)
VALUES
('Name1', '201401', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName1', '100', '200', '1','0', 'Month1', 'Q1', 'L1'),
('Name1', '201402', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName1', '100', '200', '1','0', 'Month1', 'Q1', 'L1'),
('Name1', '201403', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName1', '100', '200', '1','0', 'Month1', 'Q1', 'L1'),
('Name1', '201404', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName1', '100', '200', '1','0', 'Month1', 'Q1', 'L1'),
('Name1', '201404', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName2', '101', '200', '1','0', 'Month1', 'Q1', 'L1'),
('Name1', '201405', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName2', '100', '200', '1','0', 'Month2', 'Q1', 'L1'),
('Name1', '201406', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName2', '100', '200', '1','0', 'Month2', 'Q1', 'L1'),
('Name1', '201407', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName2', '100', '200', '1','0', 'Month2', 'Q1', 'L1'),
('Name1', '201408', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName2', '100', '200', '1','0', 'Month2', 'Q1', 'L1'),
('Name1', '201408', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName3', '100', '200', '1','0', 'Month2', 'Q1', 'L1'),
('Name1', '201409', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName3', '100', '200', '1','0', 'Month3', 'Q1', 'L1'),
('Name1', '201410', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName3', '100', '200', '1','0', 'Month3', 'Q1', 'L1'),
('Name1', '201411', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName3', '100', '200', '1','0', 'Month3', 'Q1', 'L1'),
('Name1', '201412', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName3', '0', '0', '1', '15', 'Month3', 'Q1', 'L1'),
('Name1', '201412', 'Sales1', 'Department1', 'Queue1', 'FunctionalName1',
'QueueStatus1', 'ManagerName3', '0', '0', '1', '10','Month3', 'Q1', 'L1');

問題のあるSQLは次のとおりです。

SELECT
Raw.[NTLogin],
Raw.[FiscalWeek],
MaxDuplicate.[ManagerName],
MaxDuplicate.[SalesChannel],
MaxDuplicate.Department,
MaxDuplicate.[FunctionalName],
MaxDuplicate.Queue,
MaxDuplicate.[QueueStatus],
Raw.FiscalMonthName,
Raw.FiscalQuarter,
Raw.Location,
Sum(Raw.[SRCreated]) AS [SRCreated],
Sum(Raw.[TotalInbounds]) AS [TotalInbounds],
Sum(Raw.RDHits)
FROM Raw
INNER JOIN
(SELECT Raw.[NTLogin],
Raw.[FiscalWeek],
Raw.[ManagerName],
Raw.[SalesChannel],
Raw.Department,
Raw.[FunctionalName],
Raw.Queue,
Raw.[QueueStatus]
FROM Raw
INNER JOIN
(SELECT
Raw.[NTLogin],
Raw.[FiscalWeek],
MAX(Raw.[TotalInbounds]) AS [TotalInbounds],
MAX(Raw.[SRCreated]) AS [SRCreated]
FROM Raw
GROUP BY Raw.[NTLogin], Raw.[FiscalWeek]) AS MAX
ON Raw.[NTLogin] = Max.[NTLogin]
AND Raw.[FiscalWeek] = Max.[FiscalWeek]
WHERE
Raw.[TotalInbounds] = Max.[TotalInbounds]
AND Raw.[SRCreated] = Max.[SRCreated]) AS MaxDuplicate
ON Raw.[NTLogin] = MaxDuplicate.[NTLogin]
AND Raw.[FiscalWeek] = MaxDuplicate.[FiscalWeek]
GROUP BY
Raw.[NTLogin],
Raw.[FiscalWeek],
Raw.FiscalMonthName,
Raw.FiscalQuarter,
Raw.Location,
MaxDuplicate.[ManagerName],
MaxDuplicate.[SalesChannel],
MaxDuplicate.Department,
MaxDuplicate.[FunctionalName],
MaxDuplicate.Queue,
MaxDuplicate.[QueueStatus]

誰かが私を助けてくれることを願っています! ありがとう!!!

4

0 に答える 0