我需要将TOP(X)最旧的行从活动表移动到ARCHIVE表中,但行不是按日期顺序排列的.
数据将在DATE标准上移动,并且由于有数百万条记录可能需要随时间移动,因此将逐步完成.因此查询将使用SELECT TOP和DELETE TOP.
到目前为止,我的SQL脚本是
INSERT INTO tblDataLoggedArchived
SELECT TOP(1000) *
FROM tblDataLogged
WHERE fldDateTime <= @ExpiryDate
ORDER BY fldDateTime ASC
DELETE TOP(1000) FROM tblDataLogged
WHERE fldDateTime <= @ExpiryDate
***** ORDER BY fldDateTime ASC **** HERE's the problem
COMMIT
Run Code Online (Sandbox Code Playgroud)
但是 - 这就是问题所在.
复制到归档表中的记录具有应用于SELECT的ORDER BY子句.我需要确保从原始表中删除这些记录 - 但是您不能为DELETE TOP查询指定ORDER BY
我绝不是SQL专家.有人可以告诉我使用ORDER BY参数将TOP X记录从一个表移动到另一个表的最佳方法吗?
注意,原始表没有任何索引.
谢谢
我似乎无法弄清楚这一点:
在写入标记之前,我需要知道它期望的数据类型(mywrite 函数接收的值始终是字符串)。
我意识到您必须从服务器读取数据类型,这是我的代码,但我不知道如何使用返回的信息:
var nodesToRead = BuildReadValueIdCollection(node.DisplayName, Attributes.DataType);
DataValueCollection readResults;
DiagnosticInfoCollection diag;
_session.Read(
requestHeader: null,
maxAge: 0,
timestampsToReturn: TimestampsToReturn.Neither,
nodesToRead: nodesToRead,
results: out readResults,
diagnosticInfos: out diag);
var val = readResults[0];
Run Code Online (Sandbox Code Playgroud)
我该怎么做val才能确定数据类型是什么?
我是否使用Val.Value或Val.WrappedValue或Val.WrappedValue.Value(无论有什么区别?)
我用来测试的标签又回来了 Val = "i=6".....
这是指什么?
什么数据类型是“6”和
我如何将 val 转换为我可以使用的东西。
任何帮助将不胜感激。
谢谢