【发布时间】:2019-06-05 15:58:17
【问题描述】:
我有一个如下所示的表格
DateRange
10/1
11/1
12/1
我正在使用游标遍历此表并尝试填充临时表
Create table #BidStatusCalculation1
(
Code nvarchar(max),
Data int
)
Declare @monthStart varchar(20)
DECLARE cur CURSOR FOR SELECT DateRange FROM @dateRange
OPEN cur
FETCH NEXT FROM cur INTO @monthStart
WHILE @@FETCH_STATUS = 0 BEGIN
Insert into #BidStatusCalculation1
select 'SL Payroll',Count(*) from DashboardData
where DataType = 'Bid'
and CONVERT(NVARCHAR, CreatedDate, 105) = convert(datetime,
(@monthStart+'/'+@RequestYear))
FETCH NEXT FROM cur INTO @monthStart
END
CLOSE cur
DEALLOCATE cur
这给了我如下结果
Code Data
SL Payroll 22
SL Payroll 33
SL Payroll 43
我正在修改表格所以我只得到一行
Code Data1 Data2 Data3
SL Payroll 22 33 43
有人可以告诉我在第一个循环中首先在表中插入数据然后更新它的好方法是什么。我可以放一个变量来计算循环迭代次数,然后编写单独的插入和更新,但想知道是否有更好的方法。
谢谢
【问题讨论】:
-
您将从了解
PIVOT函数中受益:Microsoft:docs.microsoft.com/en-us/sql/t-sql/queries/… StackOverflow:stackoverflow.com/questions/10428993/…
标签: sql sql-server sql-server-2014