我想知道一个非常常见的查询有哪些设施: 比方说,如果包含时间排序数据的2个表,我希望得到包含最新值的结果作为时间推进。
具体来说,我说有两张桌子,交易和报价。它们看起来像这样:
trades: timestamp, symbol, price
quotes: timestamp, symbol, bid, offer
我想要一个看起来像这样的结果表:
resultset: timestamp, symbol, price, bid, offer
请注意每个实例及时,我想要交易时的交易和最近的报价。
通常这个查询需要(我相信)三个自我加入 - 对于每天不做sql的人来说非常讨厌。更糟糕的是,我确信我是否还需要包含来自其他5个或6个表的信息。
是否有sql的变体或扩展使这些查询更简单?
我读过关于sql的时间序列扩展,近年来已经对标准sql以及供应商特定版本进行了各种更新。
我正在努力让自己熟悉标准,行业甚至学术界的内容,以改善查询此类有序数据的方式。
答案 0 :(得分:1)
我会尝试这样的事情:
ConnectionString = "Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=***;Data Source=***\***;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=***"
cnn.Open ConnectionString
cnn.CommandTimeout = 900
List = "BomLine(iCountItem).PartNo"
For Each xyz in BomLine
StrQuery = "SELECT * FROM [MY_Table] WHERE [MY_Column]='" _
& xyz.PartNo & "'"
rst.Open StrQuery, cnn
OExcel.Worksheets(1).cells(rows.count, _
1).end(xlUp).Offset(1,0).CopyFromRecordset rst
Next xyz