В настоящее время я создаю gridview с динамическими столбцами.Dynamic Gridview with Pivot Table
Я успешно создал это из запрашивая часов журнала для каждой задачи на сегодняшний день на конкретном спринте. Записанные даты становятся столбцом, а задание и протоколируемые часы становятся строками. Как по вертикали, так и по горизонтали. В этом gridview вы можете вручную отредактировать зарегистрированные часы и сохранить их в базе данных.
Проблема теперь в изменениях дизайна. Что мне нужно сделать, так это просто указать даты продолжительности спринта для столбцов и задачи в первом столбце, даже если в этой задаче или дате не было зарегистрированного часа.
Любая помощь будет оценена по достоинству. Благодарю.
здесь хранимая процедура для этого шарнирного стола
USE [JiraAutomation]
GO
/****** Object: StoredProcedure [dbo].[logs] Script Date: 4/12/2016 7:00:09 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[logs]
@username nvarchar(30),
@sprintId nvarchar(30)
AS
/* COLUMNS HEADERS */
Declare
@cols as NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(log_date)
from tbl_log join tbl_task on tbl_task.task_id = tbl_log.task_id
where tbl_log.username = @username
and tbl_log.sprint_id = @sprintId
group by log_date
order by log_date
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
DECLARE @horiz_total nvarchar(MAX)
SELECT @horiz_total = stuff((
SELECT '+isnull(' + quotename(log_date) + ',0)'
FROM tbl_log
join tbl_task on tbl_task.task_id = tbl_log.task_id
where tbl_log.username = @username
and tbl_log.sprint_id = @sprintId
GROUP BY log_date
ORDER BY log_date
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'),1,1,'')
DECLARE @vert_total nvarchar(MAX)
SELECT @vert_total = stuff((
SELECT ',sum(' + quotename(log_date) + ')'
FROM tbl_log
join tbl_task on tbl_task.task_id = tbl_log.task_id
where tbl_log.username = @username
and tbl_log.sprint_id = @sprintId
GROUP BY log_date
ORDER BY log_date
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'),1,1,'')
DECLARE @isnulls nvarchar(MAX)
SELECT @isnulls = stuff((
SELECT ',isnull(' + quotename(log_date) + ',0) as '+quotename(log_date)
FROM tbl_log
GROUP BY log_date
ORDER BY log_date
FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'),1,1,'')
DECLARE @query nvarchar(MAX)
SET @query = 'select task_description as TASK,' + @cols + ',' + @horiz_total + ' as Total
into #tmp_result
from (select task_description, log_date, log_hours from tbl_log join tbl_task on tbl_task.task_id = tbl_log.task_id
where tbl_log.username = '''[email protected]+'''
and tbl_log.sprint_id = '''[email protected]+'''
) x
pivot (sum(log_hours) for log_date in (' + @cols + ')) p
select *
from #tmp_result
union all
SELECT '''','[email protected]_total +',
ISNULL (SUM([Total]),0) FROM #tmp_result
DROP TABLE #tmp_result'
-- PRINT 'Pivot Query '[email protected]
EXECUTE(@query)
Не могли бы вы пометить свой вопрос с помощью правильной СУБД? Похоже, SQL Server –