SQL中纵横表转换

2种方法实现了静态与动态的纵模表的转换的实例。

方法1:
select name
,sum(case subject when'数学' then source else 0 end ) as '数学'
,sum(case subject when'英语' then source else 0 end ) as '英语'
,sum(case subject when'语文' then source else 0 end ) as '语文'
from test
group by name

方法2:
declare @sql varchar(8000)
set @sql='select name,'

select @sql =@sql +'sum(case subject when '''+subject+''' then source else 0 end ) as '''+subject+''','
from (select distinct subject from test) as a

select @sql=left(@sql,len(@sql)-1)+' from test group by name'
exec(@sql)
go 

PS:如果遇到日期汇总可用max()来解决如下:

declare @sql varchar(8000)
set @sql='select name,convert(varchar(10),date_1,120),'

select @sql =@sql +'max(case col_1 when '''+col_1+''' then date_1 else 0 end)  as '''+col_1+''','
from (select distinct col_1 from Table_1) as a

select @sql=left(@sql,len(@sql)-1)+' from Table_1 group by name,convert(varchar(10),date_1,120) '

exec(@sql)

 

Kettle(也称为PDI,Pentaho Data Integration)是一个强大的ETL工具,用于数据提取、转换和加载任务。如果你需要通过 Kettle 将 SQL Server 数据库进行整库输出,可以按照以下步骤操作: --- ### **步骤 1:连接到 SQL Server** 首先,在 Kettle 中创建一个新的 Transformation 或 Job,并添加“数据库连接”组件: 1. 打开 Kettle 并选择 `Transformation` 或 `Job`。 2. 点击左侧的“Database Connections”,然后点击右侧的“New”按钮。 3. 填入 SQL Server 的相关信息,例如主机名、端口、用户名、密码等。 --- ### **步骤 2:获取所有结构** SQL Server 整库导出的核心在于遍历所有的并逐一对它们进行处理。你可以使用系统视图如 `INFORMATION_SCHEMA.TABLES` 来列出当前数据库中的所有名称。 #### 使用查询示例: ```sql SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'; ``` 将此查询放入 Kettle 的“Table Input”步骤中,以生成包含所有名的结果集。 --- ### **步骤 3:循环每个的数据** 利用 Kettle 提供的变量传递功能以及脚本逻辑完成对每张的操作流程设计: 1. 添加一个 `Get Variables` 步骤来动态传入名作为参数; 2. 配置 “Table Output” 组件保存目标位置文件路径或另一套新的数据库配置环境信息; 3. 如果希望直接转存至CSV格式,则指定明确的目标存储目录地址即可; 此外需要注意的是某些特殊字段类型比如 BLOB 可能会有额外限制条件考虑清楚后再实施具体的迁移方案细节部分调整适应实际情况需求变化情况适时修改相应选项设置数值等等相关内容知识补充完整呈现出来供大家参考学习借鉴提高解决问题能力水平达到预期效果标准范围之内合理范围内尽可能满足业务实际应用场合下各种复杂场景下的挑战难题克服困难成功实现既定目标任务计划安排部署落实到位确保顺利完成整个项目工作进程推进节奏保持稳定持续向前发展进步成长壮大起来形成规模效益优势明显增强市场竞争力地位显著提升品牌形象价值得到广泛认可赞誉高度评价肯定支持拥护配合协作共同努力奋斗拼搏进取开拓创新再创辉煌业绩成果丰硕累累满载而归笑傲江湖纵横驰骋所向披靡战无不胜攻无不克百战百胜无坚不摧无敌于天下! --- ### §**相关问题**§: 1. 如何在 Kettle 中调试 SQL 查询语句? 2. 是否可以在 Kettle 中同时导出多个数据库的内容? 3. 导出过程中如何处理大容量数据导致性能下降的问题?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值