笔记如下:
--求所有BR中,曾经有大于2次状态是Closed, 并且至少做过一次Unpaid的BR集合
select * from(
select customer_trx_id, status from ar_transaction_history_all
)
pivot
(
count(status)
for status in ('CLOSED' as "CLOSED",'INCOMPLETE' as "INCOMPLETE",'UNPAID' as "UNPAID",'CANCELLED' as "CANCELLED",'PENDING_REMITTANCE' as "PENDING_REMITTANCE",'PENDING_ACCEPTANCE' as "PENDING_ACCEPTANCE")
)
where CLOSED >2 and UNPAID > 0
--先建一个表,显示BR在所有状态的统计次数
create table ar_trx_history_all_matrix as
(
select * from(
select customer_trx_id, status from ar_transaction_history_all
)
pivot
(
count(status)
for status in ('CLOSED' as "CLOSED",'INCOMPLETE' as "INCOMPLETE",'UNPAID' as "UNPAID",'CANCELLED' as "CANCELLED",'PENDING_REMITTANCE' as "PENDING_REMITTANCE",'PENDING_ACCEPTANCE' as "PENDING_ACCEPTANCE")
)
)
select * from ar_trx_history_all_matrix;
--以ar_trx_history_all_matrix为基础,求所有BR中, 最大变更次数的状态,和最小变更次数状态相差11次以上的BR的集合 (列转行)
select * from (
select customer_trx_id, max(state_count) max_value, min(state_count) min_value from (
select * from ar_trx_history_all_matrix
unpivot
(
state_count
for state_code in ("CLOSED","INCOMPLETE","UNPAID","CANCELLED","PENDING_REMITTANCE","PENDING_ACCEPTANCE")
)
) where state_count >0 group by customer_trx_id
) where max_value-min_value>11
分享到:
相关推荐
SQL 行列转换 Pivot UnPivot SQL 行列转换是指将表格中的行数据转换为列数据,或者将列数据转换为行数据。Pivot 和 UnPivot 是 SQL Server 2005 中引入的两个语法,用于实现行列转换。 Pivot Pivot 语法的主要...
枢纽表达式PIVOT和UNPIVOT是SQL Server 2005中新增的关系运算符,用于实现行列的旋转。本篇文章将介绍PIVOT和UNPIVOT的简单用法,并提供实例代码。 一、枢纽表达式PIVOT和UNPIVOT的概念 PIVOT和UNPIVOT是SQL ...
pivot 与 unpivot 函数是SQL05新提供的2个函数 灰常灰常的实用
在Oracle 11g中引入了两项新功能:`PIVOT` 和 `UNPIVOT`,这两项功能使得在SQL中进行数据的行列转换变得更加简单和直观。这些操作特别适用于报表开发,能够帮助用户快速地将数据按照特定的需求重新组织。 #### 二、...
除了PIVOT和UNPIVOT,还可以通过CASE语句和GROUP BY子句实现行列转换。例如,如果我们没有PIVOT功能,也可以这样编写SQL: ```sql SELECT student_id, MAX(CASE WHEN subject = 'Math' THEN score ELSE NULL END)...
#### 知识点一:行列转换(Pivot)的概念与应用场景 在数据库查询中,有时我们需要将数据表中的行转换为列,或者将列转换为行,这种操作被称为行列转换。行列转换在报表、统计分析等场景中非常常见,它可以帮助我们...
### 实用PowerPivot与DAX公式在Excel 2010中的应用 #### 标题解析:实用PowerPivot与DAX公式在Excel 2010中的应用 本书标题明确了其主要内容是关于如何在Microsoft Excel 2010环境中有效使用PowerPivot插件及其...
首先,我们有`PIVOT`操作,它是Oracle 11g引入的新特性,用于将行数据转换为列数据。例如,假设我们有一个销售数据表,包含产品ID、年份和销售额三列。通过`PIVOT`,我们可以将不同年份的销售额转换为每种产品的列,...
部分SQL版本,如Oracle和SQL Server,提供了内置的PIVOT和UNPIVOT关键字,使得行列转换更为直接。例如,你可以直接在查询中使用PIVOT关键字指定要转换的列和生成的新列,而UNPIVOT关键字则会将多列数据转换为行。 ...
在数据库中,Pivot和Unpivot操作用于行列转换。虽然题目强调避免使用SQL,但在某些情况下,如果数据源是数据库,使用SQL进行转换可能更为高效。C#可以调用ADO.NET执行这样的查询,然后在代码中处理结果。 5. **第...
从Oracle 11g版本开始,引入了PIVOT和UNPIVOT关键字,以支持显式的查询转换,即从行数据转换为列数据,或从列数据转换为行数据,进而生成交叉表格式的结果。这一技术尤其适用于报表生成,使得能够使用SQL语句针对...
在Oracle数据库系统中,行列转换主要通过两种方法实现: pivot 和 unpivot 操作。Pivot操作(列转行)用于将特定的行数据转换为列,而unpivot操作(行转列)则反之。 1. Pivot操作:Oracle提供了一种内建的PIVOT...
在Oracle SQL中,行列转换是一种常见的数据操作需求,主要用于将数据表中的行转换为列,或将列转换为行,以此来满足不同的数据展示或分析需求。这种转换在处理多维度数据、汇总数据或是进行复杂查询时特别有用。下面...
通过对`PIVOT`和`UNPIVOT`这两个SQL Server 2005新增功能的学习,我们可以更灵活地处理数据的行列转换问题,这对于提高数据分析效率、优化报表展示具有重要意义。无论是从行到列的转换,还是从列到行的转换,都有助...
### Oracle 11g 新特性解析 #### 一、引言 Oracle 11g作为Oracle数据库的一个重要版本,引入了一系列新的特性和改进,旨在提高数据处理能力、增强安全性、简化管理和提升性能。本文将详细介绍Oracle 11g中与数据库...
`PIVOT` 是一种专用于行列转换的函数,它将一列的值转换为新列名,同时使用聚合函数处理转换后的数据。在SQL Server中,`PIVOT` 的用法如下: ```sql SELECT Student AS '姓名', AVG(语文) AS '语文', AVG...
#### 一、行列转换概述 在处理数据库查询时,我们经常会遇到需要将表中的行数据转换为列数据的需求,这种操作通常被称为“行列转换”。例如,当我们需要汇总不同类别的数据并将其展示在同一行的不同列中时,就需要...