0
我正在爲一家需要改進的班次管理概述的公司工作。他們習慣於Excel工作表,我打算在Web瀏覽器上實現一個解決方案。該表的格式是這樣的:SQL交叉表,數據透視表
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控件模板在這個設計顯示它,等等?
感謝您的關注和幫助。我從這個社區中受益頗多。 :)
編輯: 我已經得到了解決我的問題(也許這將幫助你理解我的問題好一點)最接近的是這個僞代碼:
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服務器的選項,但希望這可以描述我想要實現的目標。
當你說*什麼是最有效的解析數據的方式*你問你應該如何導入源數據? –
@ destination-data實際上,如果您對改進的SQL查詢有建議,那麼我很樂意聽到它! 這不是我的意思。 我被引導認爲我只需要改進我的查詢,然後我就可以自動將它顯示在GridView中。 – LiHRaM