`
chancelai
  • 浏览: 8008 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

动态sql 行转列

阅读更多
第一次写的存储过程值得留念

create or replace procedure dynamic_sql_duty(
      attendmonth in varchar2,
      sqlsstr out varchar2
) is
CURSOR cur is
         select distinct t.ccid ccid, 
            nvl(lower(u.name),to_char('removed'||t.ccid)) name  
            from cmsuser u,duty t 
            where  t.ccid = u.id(+)
            and to_char( t.tdate ,'YYYY-MM') = attendmonth
            order by t.ccid  ;
 sqls varchar2(8000);

begin

  sqls :='select d.datetime,d.content,c.* from ('||chr(13)
         ||'select '||chr(13);
         
  FOR cur_result in cur LOOP
 
   sqls := sqls || '    max( decode( ccid,'||to_char(cur_result.ccid)||', status ) ) '||cur_result.name||' , '||chr(13); 
   sqls := sqls || '    max( decode( ccid,'||to_char(cur_result.ccid)||', id ) ) '||cur_result.name||'id , '||chr(13); 

  END LOOP;

  sqls := sqls 
          ||'    to_char( tdate ,'
          ||''''||'YYYY-MM-DD'||''''||') attenddate , '||chr(13)
          ||'    to_char( tdate ,'||''''||'D'||''''||') todaynum ,'||chr(13)
          ||'    to_char( tdate ,'||''''||'DAY'||''''||') todays ,'||chr(13)
          ||'    tdate '||chr(13)
          ||'  from duty '||chr(13)
          ||'  where '||chr(13)
          ||'    to_char( tdate ,'
          ||''''||'YYYY-MM'||''''||') = '
          ||'''' ||attendmonth||'''' ||chr(13)
          ||'    group by tdate ) c, dutyremark d '||chr(13)
          ||'where  c.tdate = d.datetime(+)';
      --dbms_output.put_line(sqls);
      --execute immediate sqls;
      --open testcor for sqls;
   sqlsstr := sqls;
  
end dynamic_sql_duty;
分享到:
评论

相关推荐

    SQL 行转列+动态获取列名

    SQL 行转列+动态获取列名 通用的动态获取列名

    sql server动态行转列.sql

    sqlserver 动态行专列 避免了数据列过多的时候大量的使用case when then...... 原数据 : UserName Subject Score Nick 语文 80 Nick 数学 90 Nick 英语 70 Nick 生物 85 Kent 语文 80 Kent 数学 90 Kent ...

    sql动态行转列 存储过程

    在SQL数据库操作中,"行转列"是一种常见的数据转换需求,它将表格中的多行数据转换为单列显示,通常用于数据汇总和分析。在本案例中,我们主要探讨如何使用SQL语句,尤其是存储过程,来实现动态的行转列功能。这在...

    Sql,oracle数据表行转列问题

    SQL行转列问题解决方案 SQL行转列问题是指将行记录转换为列记录的操作。本文将详细讲解SQL行转列问题的解决方案,并提供了一个具体的实例来帮助读者更好地理解该问题。 问题描述 假设我们有一个学生成绩表tb,...

    sql行转列动态与静态

    根据题目提供的信息,“sql行转列动态与静态”这一主题介绍了三种实现行转列的方法:静态方式、动态方式以及动态生成列的方式。接下来,我们将详细介绍这三种方法及其应用场景。 ### 一、静态方式 静态方式是最...

    oracle动态行转列

    给定文件中的存储过程`P_TEST`展示了如何利用动态SQL实现行转列的功能。首先,它定义了一个变量`V_SQL`用于存储最终的SQL语句,并通过游标`CURSOR_1`遍历所有唯一的日期值(`ar_date_str`)。然后,动态构建SQL语句...

    sql列转行以及行转列的通用存储过程

    根据提供的标题、描述、标签及部分内容,本文将详细介绍SQL中实现列转行及行转列通用存储过程的具体方法,特别是针对Microsoft SQL Server版本的应用场景。 ### 标题解析:SQL列转行及行转列的通用存储过程 该标题...

    DB2 SQL 实现行转列,列转行

    DB2 SQL 通过函数(CONCAT/POSSTR/LOCATE)实现行转列,列转行 可以按照标点把多列转换为一行,多行转换为一列

    SQL行转列参考代码(sqlserver)

    在不支持Pivot或者不想使用动态SQL的情况下,可以利用CASE语句实现行转列。这种方法比较繁琐,需要为每列写一个CASE语句,但依然能达成目的。 ```sql SELECT ProductID, MAX(CASE WHEN Year = 2018 THEN Sales...

    SQL行转列和列转行-静态互转-动态互转

    有case when方式和2005之后的内置pivot和unpivot方法来实现,行列互转,可以分为静态互转,动态互转。

    sql行转列解决方案.

    标题与描述均提到“SQL行转列解决方案”,这主要指的是在SQL中将数据表中的行数据转换为列数据的一种操作技巧,通常应用于需要对多行数据进行汇总展示或数据分析的场景。这种转换对于数据报告、统计分析等业务需求至...

    Sql语句实现表的行列转换,行转列,列转行

    ### SQL语句实现表的行列转换,行转列,列转行 在处理数据库时,我们经常需要对数据进行各种变换以适应不同的分析需求。其中,“行列转换”就是一种非常实用的功能,它可以帮助我们将表中的行数据转换为列数据,...

    SQL行转列显示

    这种转换技术被称为“行转列”或“透视”(Pivot),而在SQL语言中实现这一功能,最常用的方法便是利用PIVOT函数。本文将深入探讨如何使用SQL中的PIVOT函数将表格数据由行格式转换为列格式,并通过具体案例进行详细...

    sql 行转列 静态、动态 实例

    在SQL中,行转列是一种将数据库表格中的行数据转换为列数据的技术,这在处理报表或者数据分析时非常有用。本实例将详细讲解如何在SQL中实现行转列,包括静态转换和动态转换两种方法。 1. 静态行转列 在静态行转列中...

    将SQL数据表的一列转换为一行.docx

    SQL 数据表列转换为一行 在数据库管理中,经常会遇到将...这个示例展示了如何使用存储过程、临时表、动态 SQL 语句、 WHILE 循环、CALL 语句、ALTER TABLE 语句和 UPDATE 语句来将 SQL 数据表的一列转换为一行多列。

    SQL---行转列 详细描述

    在SQL Server 2000中,由于缺乏直接支持行转列的内置函数或语句,通常需要通过动态SQL来实现。具体步骤如下: 1. **构建动态SQL语句**:首先,需要查询出所有需要被转换为列的值,并基于这些值构造动态SQL。 2. **...

    SQL Server行转列使用

    T-SQL(Transact-SQL)是微软SQL Server所使用的扩展SQL语言,它提供了丰富的数据处理功能,包括行转列。在SQL Server中,有两种主要的方法可以实现这一转换: 1. 使用CASE语句: CASE语句是SQL中一个非常强大的...

    mysql动态行转列

    MySQL 动态行转列 MySQL 动态行转列是指将行数据转换为列数据的过程。在 MySQL 中,可以使用存储过程来实现动态行转列。下面是两个示例存储过程,演示如何使用 MySQL 实现动态行转列。 存储过程一: 该存储过程...

    sql动态行转列的两种方法

    最后,执行这个动态SQL语句完成行转列的操作。 总结来说,这两种方法都解决了SQL中动态行转列的问题,但适用场景有所不同。第一种方法适合列数固定且已知的情况,而第二种方法则适用于列数不确定或需要动态生成的...

Global site tag (gtag.js) - Google Analytics