我試圖根據用戶遇到了一些表所做的工作凡而不丟失數據
任務
TaskID TaskTitle
----------------------
1 Job 1
2 Job 2
3 Job 3
工作表
顯示一些與數據透視表日期之間的條款JobID AssignedTo
----------------------------
1 guid1
2 guid2
3 guid3
用戶表
UsersGuid UserName
------------------
guid1 Username1
guid2 Username2
guid3 Username3
而我想顯示是類似於以下
Task UserName1 UserName2 UserName3
Task1 0 0 0
Task2 0 97 4
Task3 0 6 0
Task4 2 40 55
我有下面的代碼,但我有被我希望它仍然顯示任務名稱,即使從來沒有出現過問題任何工作,但如果沒有發現值,它不會顯示它。
create table #TempTable
(
JobID int,
TaskID int,
TaskTitle varchar(max),
UserName varchar(max)
)
INSERT INTO #TempTable
select
Job.JobID,
Job.TaskID,
tasks.TaskTitle,
users.UserName as AssignedName
from TaskLookups tasks
left join Jobs job on
tasks.TaskID = job.TaskID
left join Users users on
job.TaskAssignedTo = users.UserID
WHERE
(job.JobDateTime BETWEEN CONVERT(DATETIME, '2016-12-01 00:00:00', 102) AND CONVERT(DATETIME, '2017-07-01 23:59:00', 102))
declare @query as nvarchar(max),
@cols as nvarchar(max)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(UserName)
from StaffUsers
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query =
'
Select * From #TempTable
pivot (count(JobID) For UserName in(' + @cols + ')) as Result order by TaskTitle
'
exec sp_executesql @query
DROP TABLE #TempTable
非常感謝
這很棒,做了詭計,謝謝!沒想到我可能已經遠離了! – slowlygettingthere