您可以使用UNPIVOT
從在假期表列讓行和Date
和AgentName
列加入與電話的結果。
-- CREATE Holiday Table
CREATE TABLE Holiday
(
Date DATE NOT NULL ,
[Susan Calladine] INT NULL ,
[Claire Willis] INT NULL ,
[Fazaila Pirbhai] INT NULL
);
-- CREATE Telephony Table
CREATE TABLE Telephony
(
CallDate DATE NOT NULL ,
AgentName NVARCHAR(100) NOT NULL ,
InboundCallsAnswered INT NULL ,
InboundHandleTime INT NULL
);
-- Insert rows in Holiday
INSERT INTO Holiday
VALUES ('2016-08-22', 0, 0, 1),
('2016-08-23', 0, 1, 1),
('2016-08-24', 0, 1, 1),
('2016-08-25', 0, 1, 1),
('2016-08-26', 0, 0, 1);
-- Insert rows in Telephony
INSERT INTO Telephony
VALUES ('2016-08-22', 'Claire Willis', 0, 0),
('2016-08-22', 'Fazaila Pirbhai', 36, 17484),
('2016-08-22', 'Susan Calladine', 0, 0),
('2016-08-23', 'Claire Willis', 12, 4250),
('2016-08-23', 'Fazaila Pirbhai', 16, 23360),
('2016-08-23', 'Susan Calladine', 0, 0);
-- Use UNPIVOT
WITH Hol
AS (SELECT Date ,
AgentName ,
Calls
FROM (SELECT *
FROM Holiday
) p UNPIVOT (Calls FOR AgentName IN ([Susan Calladine],
[Claire Willis],
[Fazaila Pirbhai])) AS unpvt
)
SELECT Date ,
Hol.AgentName ,
Calls ,
InboundCallsAnswered ,
InboundHandleTime
FROM Hol
LEFT JOIN Telephony t ON Hol.Date = t.CallDate
AND Hol.AgentName = t.AgentName
ORDER BY Date ,
AgentName;
結果將是:
感謝您的幫助永源,它越來越接近我所需要的,基本上都是在假期表我需要總結的不同值的每個人,將其與電話表重新相同,然後對每個人的表中的值進行求和,每個表中有3個人,但是他們是一個表中的行和另一個表中的行,值年的日期等。 – w00t
在那種情況下@ Yared的答案將工作正常,如果你unpivot假期表 – JonWay