我有一个持有可动态生成表的报告
#TableA
ItemId ItemName ItemVer
1 Name1 2
2 Name2 9
3 Name3 5
.
.
.
500 Name500 3
所有项目的临时表
然后,我有另一种保存快照是随着SnapshotId
CREATE TABLE #tmpSnapshot_Dates(
[SnapshotId] [uniqueidentifier] NOT NULL,
[DateTaken] datetime NOT NULL)
INSERT INTO #tmpSnapshot_Dates SELECT SnapshotId, DateTaken From Snapshot_Info Where DateTaken <= @EndDate
所采取的所有日期
现在在#tmpSnapshot_Dates
表中的每个日期我想这涉及它的每个项目数
SELECT ItemId, Count(*) From Items Where SnapshotId = @SnapshotId
,然后通过添加一列
DECLARE @ColName VARCHAR(100)
SET @ColName = 'Installed ' + CONVERT(Varchar, @DateA, 6)
exec('ALTER TABLE #TableA ADD ['[email protected]+'] int NOT NULL CONSTRAINT [DF_#TableA_Installed on] DEFAULT 0')
更新#TableA
,然后将数据插入到新列。然后我需要在#tmpSnapshot_Dates
重复这对于每一日期,给人造成#TableA
,看起来像
#TableA
ItemId ItemName ItemVer Installed 01 Jan 12 Installed 07 Feb 12
1 Name1 2 34 33
2 Name2 9 56 59
3 Name3 5 12 26
.
.
.
500 Name500 3 98 106
我的问题是
- 我在这里通过接近它的错误创造一个噩梦办法?
- 我最好如何循环访问
#tmpSnapshot_Dates
,然后获取数据以创建下一列?我总是试图避免游标,但这是我需要使用游戏的情况之一吗?
可能会有12列添加,并不是每个项目将返回每个日期。
我不知道为什么这篇文章的格式已经排在最后。当我编辑它时,它看起来不像这样。 – Fred