Я работаю над запросом, который может представлять количества вместо данных в упрощенном виде. Я представляю свою проблему на базовом примере, потому что я играю с тоннами записей.
Как показано в базовом выводе из таблицы Temp, я работаю над представлением 2-го и 3-го столбцов с соответствующимик действительному количеству. Я пытаюсь запросить временную таблицу, чтобы представить Отдел вместе со счетчиком каждой операционной системы, используемой в отделе, а также счетом Tech_Company.
Я пробовал следующий запрос, чтобы представить уникальные Отделы исвязанный счетчик под каждым пунктом вправо, но я получаю повторяющиеся записи из-за разницы в столбцах справа.
/************ Table Creation ****************/
CREATE TABLE #TEMP1
(
Department VARCHAR(20),
Operating_System VARCHAR(20),
Tech_Company VARCHAR(20)
)
INSERT INTO #TEMP1 VALUES
('Marketing','Windows','DellLaptop'),
('Sales','IOS','Macbook'),
('Financial','IOS','Macbook'),
('Human Resources','Andorid','DellLaptop'),
('Human Resources','Andorid','DellLaptop'),
('Human Resources','Andorid','Lenovo'),
('PR','IOS','Macbook'),
('Buying','Windows','HP'),
('Buying','Linux','Asus'),
('Buying','Windows','Asus'),
('Buying','Linux','DellLaptop'),
('R&D','Linux', 'DellLaptop')
GO
/************ End of Table Creation ****************/
SELECT * FROM #TEMP1
DROP TABLE #TEMP1
Basic Output:
Department Operating_System Tech_Company
Marketing Windows DellLaptop
Sales IOS Macbook
Financial IOS Macbook
Human Resources Andorid DellLaptop
Human Resources Andorid DellLaptop
Human Resources Andorid Lenovo
PR IOS Macbook
Buying Windows HP
Buying Linux Asus
Buying Windows Asus
Buying Linux DellLaptop
R&D Linux DellLaptop
Что я пробовал:
SELECT Department, case when Operating_System = 'Windows' THEN COUNT(Department) ELSE '' END AS 'Windows',
case when Operating_System = 'IOS' THEN COUNT(Department) ELSE '' END AS 'IOS',
case when Operating_System = 'Andorid' THEN COUNT(Department) ELSE '' END AS 'Andorid',
case when Operating_System = 'Linux' THEN COUNT(Department) ELSE '' END AS 'Linux',
case when Tech_Company = 'DellLaptop' THEN COUNT(Department) ELSE '' END AS 'DellLaptop',
case when Tech_Company = 'Macbook' THEN COUNT(Department) ELSE '' END AS 'Macbook',
case when Tech_Company = 'HP' THEN COUNT(Department) ELSE '' END AS 'HP',
case when Tech_Company = 'Lenovo' THEN COUNT(Department) ELSE '' END AS 'Lenovo',
case when Tech_Company = 'Asus' THEN COUNT(Department) ELSE '' END AS 'Asus'
FROM #TEMP1
GROUP BY Department,Operating_System,Tech_Company
Output:
Department Windows IOS Andorid Linux DellLaptop Macbook HP Lenovo Asus
Buying 0 0 0 1 0 0 0 0 1
Buying 0 0 0 1 1 0 0 0 0
Buying 1 0 0 0 0 0 0 0 1
Buying 1 0 0 0 0 0 1 0 0
Financial 0 1 0 0 0 1 0 0 0
Human Resources 0 0 2 0 2 0 0 0 0
Human Resources 0 0 1 0 0 0 0 1 0
Marketing 1 0 0 0 1 0 0 0 0
PR 0 1 0 0 0 1 0 0 0
R&D 0 0 0 1 1 0 0 0 0
Sales 0 1 0 0 0 1 0 0 0
Новая схема должна бытьследующим образом:
Col 1 Col 2 Col 3 Col 4 Col 5 Col 6 Col 7 Col8 Col9 Col10
Department Windows IOS Andorid Linux DellLap Macbook Lenovo HP Asus
Buying 2 0 0 2 1 0 0 1 2
Financial 0 1 0 0 0 1 0 0 0
Human Res 0 0 3 0 2 0 1 0 0
Marketing 1 0 0 0 1 0 0 0 0
PR 0 1 0 0 0 1 0 0 0
R&D 0 0 0 1 1 0 0 0 0
Sales 0 1 0 0 0 1 0 0 0