数据库动态转行问题, 附上代码,
declare @sqlStr varchar(5000),@sqlCell varchar(5000) --临时变量
set @sqlStr=''
set @sqlCell=''
declare MyDdecl cursor scroll
for
select d from #TMP07 group by d --找出所有列
open MyDdecl --打开游标
declare @d sysname
fetch next from MyDdecl into @d
while(@@fetch_status=0)--这里判断是不是到了最后。
begin
set @sqlStr=@sqlStr+RTRIM(@d)+'=isnull(sum(case d when '''+RTRIM(@d)+''' then qty end),0)'
set @sqlCell=@sqlCell+'sum(a.'+RTRIM(@d)+') '''+RTRIM(@d)+''''
fetch next from MyDdecl into @d
if @@fetch_status=0 begin
set @sqlStr=@sqlStr+','
set @sqlCell=@sqlCell+','
end
end
close MyDdecl--关闭
deallocate MyDdecl --删除这个游标
print @sqlStr
print @sqlCell
declare @sql varchar(3000)
set @sql='select Wo_ptr,plant_ptr,'+@sqlCell+' from ('
set @sql=@sql+'select Wo_ptr,plant_ptr,'+@sqlStr+' from (select TOP (100) PERCENT * from #TMP07 order by SEQ_no ) #TMP07 group by WO_ptr ,plant_ptr '
set @sql=@sql+' ) a group by WO_ptr,plant_ptr'
print @sql
exec(@sql)
分享到:
相关推荐
### 关于SQL Server数据库中列转行的研究 #### 背景与问题描述 在进行数据处理时,经常需要将数据库表中的一列带有逗号分隔的字符串数据转换为多行显示。这种操作通常被称为“列转行”,即从单个列中拆分出多个值,...
### 达梦数据库常用SQL语句语法 #### 一、新建表 在达梦数据库中创建新表时,可以通过以下语法实现: ```sql CREATE TABLE [表名] ( [自动编号字段] INT IDENTITY(1,1) PRIMARY KEY, [字段1] NVARCHAR(50) ...
数据库文档大全的知识点涵盖范围广泛,包括但不限于SQL的常用对象整理、SQL Server 2005/2008新语法操作、SQL查询技巧、行转列、列转行、CTE、存储过程、函数、性能调优、BI技术、面试总结以及在数据库工作中积累的...
数据库工程师的主要工作包括设计并优化数据库物理建设方案、制定数据库备份和恢复策略及工作流程与规范、在项目实施中承担数据库的实施工作、针对数据库应用系统运行中出现的问题提出解决方案、对空间数据库进行分析...
Oracle 数据库中,列转行问题是一个非常传统的话题。在这个问题中,我们需要将行数据转换成不同的列表示,或者将不同的列数据写到同一列的不同行上。这种问题在实际应用中非常常见,如将学生的成绩从行数据转换到列...
在Oracle数据库中,行列转换是数据处理中常见的需求,尤其在数据分析、报表生成或界面展示时。列转行(Pivot)和行转列(Unpivot)是两种基本操作,可以将数据按照不同的维度进行组织。传统的列转行方法通常涉及`...
在SQL数据库操作中,"行转列"是一种常见的数据转换...记住,尽管这种方法强大,但也要注意性能问题,因为动态SQL可能会增加查询的复杂性,影响数据库的执行效率。在实际应用中,需要根据具体需求和数据库环境进行优化。
IBM DB2通用数据库SQL入门教程是针对初学者设计的一份宝贵资源,旨在帮助读者掌握如何在IBM DB2数据库系统中运用SQL(结构化查询语言)...无论你是IT新手还是希望转行至数据库管理,这份教程都将是你宝贵的参考资料。
《MySQL Group Replication——京东数据库技术部中文版》 MySQL Group Replication是MySQL数据库系统中的一个强大特性,它提供了一种高可用性和故障切换解决方案,适用于对数据一致性和可用性有严格要求的业务场景...
### SQL语句实现表的行列转换,行转列,列转行 在处理数据库时,我们经常需要对数据进行各种变换以适应不同的分析需求。其中,“行列转换”就是一种非常实用的功能,它可以帮助我们将表中的行数据转换为列数据,...
《SQL Server 2005数据库简明教程》是一本专为初学者设计的教材,旨在帮助读者快速掌握SQL Server 2005的核心概念和技术。...无论你是计算机专业的学生还是希望转行的工作者,这都是你踏入数据库领域的理想起点。
DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列
数据库性能优化是一项关键任务,它确保数据库系统的高效运行,从而为用户提供快速的查询响应和良好的用户体验。SQL语句优化是数据库性能优化中的一个核心环节,涉及对SQL查询语句的调整,以减少查询时间,提高系统...
本篇将深入探讨如何利用LINQ进行动态查询以及如何实现行转列,这对于构建灵活的数据分析和展示功能至关重要。 首先,让我们来理解什么是LINQ动态查询。在传统的LINQ查询中,我们通常使用lambda表达式或方法链来定义...
在Oracle Developer中,"列转行小工具"是一种实用功能,它主要用于处理数据库表中的数据,将多列数据转换为单列数据,通常涉及到的是数据的行列转换操作。这种操作在处理复杂的数据分析、报表生成或者接口对接时非常...
3. **修改行**:`MODIFY`语句允许在不指定主键的情况下添加或更改行。 4. **删除行**:`DELETE`语句用于从表中移除行。 5. **光标操作**:通过`OPEN CURSOR`, `FETCH`, `CLOSE CURSOR`使用光标逐行读取数据,适合...
7. **错误处理**:理解并编写适当的错误处理代码,以应对可能出现的数据库连接问题或SQL执行错误。 8. **范例解析**:书中通过一系列实际例子,如学生管理系统、图书借阅系统等,演示如何将以上知识点应用于实际...
这个SQL语句使用了动态SQL语句,首先生成一个select语句,然后使用exec函数来执行该语句。 二、行列转换--合并 有时候,我们需要将一个表中的多行数据合并成一个字符串。例如,我们有一个表A,其中包含id和pid两列...
Oracle 10g数据库应用之ADO数据访问技术是数据库编程中的一个重要主题,尤其对于使用Visual Basic等编程语言的开发者来说。ADO(ActiveX Data Objects)是一种流行的数据访问接口,允许程序与各种数据库进行交互,...
在处理数据库中的数据时,有时候需要将一列中的多个值转化为多列的形式展示,这通常称为“列转行”操作。这种转换可以使得数据更适合特定的报表或分析需求。例如,原始数据可能是一列包含多个任务名称的数据,但为了...