在 SQL Server 中的游标中插入和更新

SP1

我有一个如下所示的表格

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

SELECT Code,
       [22] Data1,
       [33] Data2,
       [43] Data3
FROM
    (
      SELECT *
      FROM T
    ) TBL
    PIVOT
    (
      MAX(Data) FOR Data IN([22],[33],[43])
    ) PVT

演示

对于动态枢轴

CREATE TABLE T
(
  Code VARCHAR(45),
  Data INT
);

INSERT INTO T VALUES
('SL Payroll',    22),
('SL Payroll',    33),
('SL Payroll',    43);

DECLARE @IN VARCHAR(MAX) = '',
        @Cols VARCHAR(MAX) = '';

SELECT @IN = @IN + ',' + QUOTENAME(Data),
       @Cols = @Cols + ',' + QUOTENAME(Data) + ' AS Data'+
               CAST(ROW_NUMBER()OVER(ORDER BY (SELECT NULL)) AS VARCHAR)
FROM T;

SELECT @IN = STUFF(@IN, 1, 1, ''), @Cols = STUFF(@Cols, 1, 1, '');

DECLARE @SQL NVARCHAR(MAX) = N'SELECT Code, ' +
                               @Cols+
                               ' FROM (SELECT * FROM T) TBL PIVOT (MAX(Data) FOR Data IN('+
                               @IN+
                               ')) PVT';
     EXECUTE sp_executesql @SQL;

演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server:在存储过程中插入游标

来自分类Dev

SQL Server中的嵌套游标

来自分类Dev

SQL Server表中的并行插入/更新

来自分类Dev

在SQL Server中插入更新数据帮助

来自分类Dev

SQL Server表中的并行插入/更新

来自分类Dev

在SQL Server中的多个游标中发出

来自分类Dev

在 SQL Server 中循环游标

来自分类Dev

如何使用sql游标更新sql server数据库中的数据?

来自分类Dev

在SQL游标中插入错误

来自分类Dev

SQL Server更新循环/游标

来自分类Dev

如何在不循环或游标在SQL Server 2005中更新此查询

来自分类Dev

如何在不循环或游标在SQL Server 2005中更新此查询

来自分类Dev

在SQL Server中插入XML

来自分类Dev

在SQL Server中插入/删除/更新触发器

来自分类Dev

触发在SQL Server中插入,更新,删除库存数量

来自分类Dev

触发在SQL Server中插入,更新,删除库存数量

来自分类Dev

如何从SQL Server的sqlite中插入更新的记录

来自分类Dev

生成XML并在不使用游标的情况下在sql Server中的表中更新它

来自分类Dev

如何使用Windows Service(C#)中的多线程在SQL Server 2008 R2中插入和更新同一插入的多条记录?

来自分类Dev

替换SQL Server 2008 R2中的游标

来自分类Dev

如何在SQL Server中的过程内运行游标

来自分类Dev

在SQL Server 2005中为临时表创建游标

来自分类Dev

在SQL Server中的查询中插入数据

来自分类Dev

在SQL Server中更新数据

来自分类Dev

SQL Server中的多个更新

来自分类Dev

SQL Server中的更新顺序

来自分类Dev

更新SQL Server中的特定行和列

来自分类Dev

如何在C#和SQL Server中更新值?

来自分类Dev

如何找到有关在sql server 2008中更新或插入sql表行的信息?

Related 相关文章

热门标签

归档