sql - 基于发票行项目检查的 SSIS SQL 拆分文件
问题描述
我有一个 SQL 表,其中包含以下详细信息。发票 ID 及其各自的详细信息。每个发票可以有单行或多行。
我的要求是我需要拆分多个 CSV 文件。我可以使用SSIS轻松做到这一点。
但是假设一张发票有 4 行,那么它应该被捕获在单个文件中。不是一个文件中的 2 行,另一个文件中的另外两行。这必须在 SSIS 中导出时处理
例如,给定的数据有 20 条记录,因此如果我将每个记录拆分为 10 条记录,那么将提取 2 个文件。但是,如果您在第 8 行中看到发票 105 有 4 行。因此它应该移动到第二个文件。第一个文件将有直到发票 104 达到 8 行(这很好)。这对我来说似乎是一项非常棘手的任务。我将不胜感激有关如何实现这一目标的任何意见。
解决方案
这是一个很好的问题,这可能是客户方面的要求,也可能是我们亲爱的经理的要求。我有一个解决方案 -
写Sql
查询你自己我给出的逻辑。
1-当该表中没有记录时,Foreachloop将停止
Declare @cnt int
Set @cnt=(Select count(*) from your_table)
IF @cnt>0
2-首先,通过使用 Row_Number() 函数按函数组划分记录,其中大于或等于 4,然后使用.Invoice Id
and count
Invoice Id
count
Execute SQL Task
3-根据 Row_Number() 找到记录,将其分配给一个变量,然后从表中删除这些记录,仅Execute SQL Task
作为一个完整的结果集。下一次迭代,这些记录将不存在。
4-将带有时间戳的变量中的数据插入 Excel 工作表。
5-在下一次迭代中,它将Invoice Id
根据 Row_Number 选择具有 4 条或多于 4 条记录的下一个。
这个循环的 6-Out side 我们将把所有Invoice Id
超过 4 条记录插入到带有时间戳的 Excel 工作表中。
我已经创建了类似的项目,其中客户想要的数据应该根据城市进行分叉,这与此类似,目前我的机器上没有安装 SQL Server 和 Visual Studio 数据工具,否则无法给你确切的组件,请尝试逻辑,一旦您有任何问题,请告诉我。
推荐阅读
- spring - CDI 中的 Spring Data JPA - ResourceLoader 不能为空
- java - 线程“main”中的异常 java.lang.RuntimeException 问题与公共静态 void
- neo4j - 根据特定条件将整数数组吐出到多个整数数组中
- sql - 子查询分解不能在 PostgreSQL 中工作
- oracle - 在 Oracle 分区表中插入数据的并发查询
- ios - Xcode 10.0 错误“命令 /Applications/Xcode 10.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc 失败,退出代码为 1”
- ios - 如何在模型类中设置和获取数据?
- puppeteer - 浏览器初始化后断开连接
- html - 在中心垂直对齐文本 - 图像顶部?
- javascript - 使用javascript动态绑定onclick事件