Я работаю в компании, которая нуждается в улучшенном обзоре управления переключением. Они используются для листа excel, и вместо этого я должен реализовать решение в веб-браузере. Формат листа что-то вроде этого:SQL Cross-Tabulation, Pivot
Employee1 Employee2 Employee3
DD/MM/YYY1 Mon Shift1 Shift2 Shift3
DD/MM/YYY2 Tue Shift2 Shift3 Shift1
DD/MM/YYY3 Wed Shift3 Shift1 Shift2
DD/MM/YYY4 Thu Shift1 Shift2 Shift3
DD/MM/YYY5 Fri Shift2 Shift3 Shift1
Моя проблема заключается в том, что сейчас, по-видимому, как это:
Date Shift_Type_Name Employee_Name
DD/MM/YYY1 Mon Shift1 Employee1
DD/MM/YYY1 Mon Shift2 Employee2
DD/MM/YYY1 Mon Shift3 Employee3
Я использую ASP.net 4.6.1, и Microsoft SQL Server.
Прилагаю фотографию дизайна базы данных для заинтересованных.
Должен ли я сосредоточиться на SQL запросе динамически добавить столбец для каждого сотрудника, или я должен использовать ListView шаблоны, чтобы отобразить его в этом проекте, и т.д.?
Спасибо за ваш интерес и помощь. Я много выиграл от этого сообщества. :)
Edit: Ближайший я получил к решению моей проблемы (и, возможно, это поможет вам понять мой вопрос немного лучше) это псевдокод:
SELECT
[Date].[date] AS 'Date',
FOR EACH(SELECT [Employee].* AS THIS){
SELECT [Shift_Type].[name] AS [THIS].[Name] + ' Morning',
WHERE [Shifts].[Type] = @morning_hours AND [Shifts].[Employee_fk] = [THIS].[ID]
SELECT [Shift_Type].[name] AS [THIS].[Name] + ' Evening',
WHERE [Shifts].[Type] = @evening_hours AND [Shifts].[Employee_fk] = [THIS].[ID]
}
FROM [Groups]
JOIN [Employee]
ON [Groups].[id] = [Employee].[group_fk]
JOIN [Shifts]
ON [Employee].[id] = [Shifts].[employee_fk]
JOIN [Shift_Types]
ON [Shift_Types].[id] = [Shifts].[type_fk]
RIGHT JOIN [Date]
ON [Date].[id] = [Shifts].[date_fk]
JOIN [Public_Holidays]
ON [Public_Holidays].[date_fk] = [Date].[id]
Я понимаю что FOR EACH не является вариантом на SQL-сервере, но, надеюсь, это описывает то, что я пытаюсь достичь.
Когда вы говорите * Что является наиболее эффективным способом анализа данных *, вы спрашиваете, как импортировать исходные данные? –
@ данные назначения Фактически, если у вас есть предложение по улучшенному SQL-запросу, я бы с удовольствием его услышал! Это было не то, что я имел в виду, хотя. Я убежден, что мне просто нужно улучшить свой запрос, а затем я могу отображать его в GridView автоматически. – LiHRaM