SQL重复值 - MS ACCESS

时间:2013-10-01 12:13:54

标签: sql ms-access

我遇到了MS Access上的SQL问题..

问题是,我有:作为一个人可以重复的周可以在两个不同的部门,或销售渠道,区域经理名称,或同时在两周内。

我想要什么?我希望在我有更大数额的同一周内总计总入口数量等(有70种不同)...

很好,设法做到这一点,但是,当在一个确定的一周内,它们重复了一周的时间内,总的入口和创建的SR是相等的。我没有第三个值将它放在这里,也许使用第一个,但是我不知道怎么做..:/

任何人都知道如何管理它?

在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]
希望有人可以帮助我!感谢!!!

0 个答案:

没有答案