我在工作中看到了一些有趣的数据。它的布局类似于:
DATE
Tran ID TRANSACTION
Tran ID TRANSACTION
Tran ID TRANSACTION
NEXT DATE
Tran ID TRANSACTION
Tran ID TRANSACTION
THIRD DATE
Tran ID TRANSACTION
例如:
20140219
Tran 1 10.00
Tran 1 Beneficiary ABC Originator XYZ
Tran 2 20.00
Tran 2 Beneficiary 123 Originator ABC
Tran 2 NOTE: bleh bleh bleh
Tran 3 10.00
Tran 3 Beneficiary XYZ originator ABC
20140218
Tran 4 10.00
Tran 4 Beneficiary ABC Originator XYZ
Tran 5 20.00
Tran 5 Beneficiary 123 Originator ABC
首先,这个布局叫什么?它看起来像是一条日期记录,而日期的附录是交易,但每笔交易都取决于Tran ID。具有相同ID的交易是相关的。
其次,我正在尝试计算每个日期的记录。因此,对于提供的示例,它将是
20140219 = 8 Records
20140218 = 5 Records
到目前为止,我只能通过创建一个额外的列并使用游标循环遍历字符串并在前8个字符中查找日期来实现此目的。如果前8个字符是日期然后更新,则将日期分配给变量并将变量分配给所有以下字符串,直到它到达下一个日期并再次更新日期。所以数据看起来像这样:
Manipulated Data:
20140219 20140219
20140219 Tran 1 10.00
20140219 Tran 1 Beneficiary ABC Originator XYZ
20140219 Tran 2 20.00
20140219 Tran 2 Beneficiary 123 Originator ABC
20140219 Tran 2 NOTE: bleh bleh bleh
20140219 Tran 3 10.00
20140219 Tran 3 Beneficiary XYZ originator ABC
20140218 20140218
20140218 Tran 4 10.00
20140218 Tran 4 Beneficiary ABC Originator XYZ
20140218 Tran 5 20.00
20140218 Tran 5 Beneficiary 123 Originator ABC
然后我使用以下查询来计算信息:
SELECT LEFT(string,8), COUNT(*) FROM table
GROUP BY Left(string,8)
然而,我被告知"一个好的查询编写者可以编写没有光标的代码"。目前我在没有光标的情况下如何做到这一点。我似乎有一些非常有创意的方法来克服StackOverflow上的问题,我想我会在这里问一下是否有人有解决方案。
答案 0 :(得分:0)
如果您将其作为平面文件加载,那么至少在表格上放置一个iden PK,以便您可以重现订单。
没有光标,你不能解析那些数据 但是为什么要等到加载它来解析呢? 在.NET或您喜欢的框架中逐行阅读,然后解析它。
我看到了
iden(PK)int32
日期日期时间
tran SmallInt
text varchar(800)
您可以将其分解为金额,受益人,发起人和备注 解析会有点复杂但不错