Şu anda dinamik sütunlara sahip bir gridview oluşturuyorum.Pivot Tablolu Dinamik Kılavuz Görünümü
başarıyla belirli sürat tarihten başına her görev için günlük saat sorgulama bu oluşturduk. Günlüğe kaydedilen tarihler sütun olur ve görev ve günlüğe kaydedilen saatler satır olur. Hem dikey hem de yatay toplamlar. Bu kılavuz görünümünde, kaydedilen saatleri manuel olarak düzenleyebilir ve veritabanına kaydedebilirsiniz.
Şimdi sorun tasarım değişiklikleri. Yapmam gereken şey, o görev veya tarihte hala kayıtlı saat olmasa bile ilk sütundaki sütunlar ve görev için sprint süresi tarihlerini listelemektir.
Herhangi bir yardım için teşekkür ederiz. Teşekkürler. Burada
Ben doğru sorunu anlamak, sorun @query değişkeni sorgunuzdaki katılmak türü ile olan bu bölme masanınUSE [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)
Sorunuzu uygun RDBMS ile etiketleyebilir misiniz? SQL Server gibi görünüyor –