我需要帮助才能执行以下操作:
MainTable 有
ID (Primary Key)
DATE_TIME
STATE
SubTable 有
ID (Primary Key)
DATE_TIME
LINE1
当MainTable.STATE
值从100更改为200时,我想选择SubTable.Line1
值MainTable.DATE_TIME = SubTable.DATE_TIME
似乎LAG()
或LEAD()
函数可以在MainTable.STATE
字段中检测到此数据转换。
如何使用LAG()
或LEAD()
函数的SQL语句执行此操作?
感谢所有快速回复。由于MainTable.STATE值可以是任何值,因此我无法在sql stmt中包含其值。
答案 0 :(得分:0)
这应该可以解决问题。
SELECT Line1
FROM SubTable s
INNER JOIN
(
SELECT DATE_TIME, State, LAG(State) OVER(ORDER BY DATE_TIME) as LastState
FROM MainTable
)
m
ON s.DATE_TIME = m.DATE_TIME
WHERE State = 200
AND LastState = 100
答案 1 :(得分:0)
假设我理解你的问题,你可以这样做:
var successCallback = function (response)
{
if(typeof response == "string")
//show message
else
//do something
};
答案 2 :(得分:0)
这是一个解决方案:
SELECT *, CASE WHEN State = 200 AND LAG(State) OVER(ORDER BY ID) = 100
THEN (SELECT TOP 1 Line1 FROM SubTable WHERE DATE_TIME = m.DATE_TIME) END
FROM MainTable m