【发布时间】:2012-02-28 04:32:12
【问题描述】:
有什么方法可以在表格中添加一列,但我希望标题是日期,并且添加的每个新列都会有一个第二天的列标题,因此
SET @date1 = @date1 + 1
我希望表格看起来像这样,其中顶部的日期是脚本循环的每一天的新列:
StoreID StoreName 02/01/12 03/01/12 04/01/12
1234 Coles1 7512 8574
1235 Coles2 7210 8441
1236 Coles3 4845 5448
当我运行脚本时,我收到以下错误消息:
消息 170,第 15 级,状态 1,第 1 行
第 1 行:“@Column”附近的语法不正确。
消息 170,第 15 级,状态 1,第 1 行
第 1 行:“@Column”附近的语法不正确。
这是我的脚本:
DECLARE @date datetime
DECLARE @date1 datetime
DECLARE @date2 datetime
DECLARE @Column varchar(8)
SET @date = '02 Jan 2012'
SET @date1 = '02 Jan 2012'
SET @date2 = '08 Jan 2012'
SET @Column = CONVERT(VARCHAR(8), @date1, 3)
IF NOT EXISTS (SELECT * FROM sysobjects WHERE xtype = 'U' AND name = '#vl_temp_trans')
BEGIN
CREATE TABLE #vl_temp_trans
(StoreID INT,
StoreName VARCHAR(100),
@Column MONEY) ----> column name to be date "@Column)
END
WHILE (@date1 <= @date2)
BEGIN
SET @Column = CONVERT(VARCHAR(8), @date1, 3)
ALTER table #vl_temp_trans
ADD @Column MONEY ----> column name to be date "@Column"
Insert into #vl_temp_trans (storeID, storeName, @Column)
select storeId, storeName, TotalDailyTransactions
from daily_trans t1 (nolock)
full outer join outlets t2 (nolock) on t1.StoreID = t2.StoreID
where DailyEnd = @date1 + 1
SET @date1 = @date1 + 1
END
【问题讨论】:
-
你知道我为什么要修改你的问题吗?为什么要撤消它们?
-
除了格式和可读性之外,哪个表有
TotalDailyTransactions和DailyEnd列?一个,两个?为什么您的任何列都没有以表别名为前缀以避免列名不明确错误(以及我们提出的问题)? -
检查更新的代码...可能会解决您的问题.....
-
嗨 Aaron,感谢您的回复,但我没有撤消任何操作...
-
在我应用正确的代码格式后,您对代码进行了两次编辑。我不会再麻烦了,但请突出显示错误消息、表格数据等,然后单击代码
{}按钮,使它们看起来像您的代码示例。
标签: sql sql-server sql-server-2008 alter-table