如何根據列創建列。MSSQL:使用計數時根據行創建列
所以排「EOIVR - SB_Internal_LN - 3 - 操作員」,它會創建一個名爲「操作」列和值將是從「選項按」
在這種sql fiddle
的價值下表
CREATE TABLE IVRInterval
([cLevelName] varchar(50), [nLevel] FLOAT(20), [I3TimeStampGMT] DATETIME, [cExitPath] varchar(20))
;
INSERT INTO IVRInterval
([cLevelName], [nLevel], [I3TimeStampGMT], [cExitPath])
VALUES
('EOIVR - SB_Internal_LN - 3 - Operator', '5', '2017-10-05 09:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 3 - Operator', '5', '2017-10-05 10:00:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 3 - Operator', '5', '2017-10-11 11:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 3 - Operator', '5', '2017-10-11 12:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 1 - SD', '5', '2017-10-11 13:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 1 - SD', '5', '2017-10-09 08:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 1 - SD', '5', '2017-10-09 11:00:00.000', '*'),
('EOIVR - SB_Internal_LN - 1 - SD', '5', '2017-10-11 15:00:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 1 - SD', '5', '2017-10-06 09:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 1 - SD', '5', '2017-10-06 11:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 1 - SD', '5', '2017-10-09 14:30:00.000', '*'),
('EOIVR - SB_Internal_LN - 2 - Lobby', '5', '2017-10-06 13:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 2 - Lobby', '5', '2017-10-09 14:00:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 2 - Lobby', '5', '2017-10-04 07:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 2 - Lobby', '5', '2017-10-04 08:30:00.000', 'Workgroup Queue'),
('EOIVR - SB_Internal_LN - 2 - Lobby', '5', '2017-10-10 08:00:00.000', '*')
我運行此查詢
select
Convert(date,I3TimeStampGMT) as 'Dates',
(select cLevelName) as 'Options Name',
count(I3TimeStampGMT) as 'Option Press'
from IVRInterval
where
I3TimeStampGMT between '2017-10-04 00:00:00' and '2017-10-11 23:59:59'
and cLevelName like '%%EOIVR - SB_Internal_LN -%%'
and nLevel = '5'
and not cExitPath = '*'
group by cLevelName, Convert(date,I3TimeStampGMT)
我得到這樣的結果
Dates Options Name Option Press
2017-10-04 EOIVR - SB_Internal_LN - 2 - Lobby 2
2017-10-05 EOIVR - SB_Internal_LN - 3 - Operator 2
2017-10-06 EOIVR - SB_Internal_LN - 1 - SD 2
2017-10-06 EOIVR - SB_Internal_LN - 2 - Lobby 1
2017-10-09 EOIVR - SB_Internal_LN - 1 - SD 1
2017-10-09 EOIVR - SB_Internal_LN - 2 - Lobby 1
2017-10-11 EOIVR - SB_Internal_LN - 1 - SD 2
2017-10-11 EOIVR - SB_Internal_LN - 3 - Operator 2
我想有我的結果是這樣
Date Lobby SD Operator
2017-10-11 0 1 1
我得到了只讀在MSSQL
以及鏈接到小提琴,將小提琴代碼複製到問題,並請添加一些輸出到帖子的描述,我看不出如何結果可能導致您想要的輸出。 – Tanner
在這裏看看https://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query – ventik