を教えてくださいない場合は、休日テーブルの列から行を作成し、Date
とAgentName
列で電話で結果を結合するためにUNPIVOT
を使用することができます。
-- 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人の人がいますが、1つのテーブルの列と他のテーブルの列、年の価値など – w00t
その場合あなたが休暇テーブルをアンピボットすると@ Yared答えがうまくいくでしょう – JonWay