我有两张桌子,基本上记录了KG用户可以存储在三个不同容器中的最大重量:
dbo.AuditStorage的工作方式如下(截图如下):
该表最初为空,当它首次被填充时,将自动插入3行(这由触发器完成):
在上面的屏幕截图中,我们可以看到一个月后用户决定将他的Max_Storage1从50增加到100 ,将他的Max_Storage2从500减少到400。 这里应用了相同的逻辑:
我的目标是能够编写一个查询,返回一个用户列表,其中一个Max_Storage_X值已经增加而另一个已经减少。
我怎样才能做到这一点?
答案 0 :(得分:0)
我认为问题在于,您没有任何字段可以分组,以便进行自我联接,您需要进行比较。
以下是一些示例代码。您需要添加另一个OR条件来比较Max_storage1和maxstorage3,以及Max_storage2和maxstorage3
SELECT IDENTITY(int,1,1) AS rownum, *
INTO #temp_audit
FROM dbo.Auditstorage
ORDER BY UPDATE_time
SELECT * FROM #temp_audit a
INNER JOIN #temp_audit b
ON a.rownum = b.rownum -2
AND a.userid = b.userid
WHERE
(
(a.Max_storage1 < b.Max_storage1 AND a.Max_storage2 > b.Max_storage2)
OR
(a.Max_storage1 > b.Max_storage1 AND a.Max_storage2 < b.Max_storage2)
)
答案 1 :(得分:0)
您可以尝试这样的事情:
RowID
我们的想法是为特定用户插入的每条记录计算CTE
。然后在第二个log_df = pd.read_csv(file_name)
nod_intervals = np.array([])
for index, row in log_df.iterrows():
if row['gesture'] == 'Nod' and row['label'] == 'y':
nod_intervals = np.append(nod_intervals, (row['start'], row['end']))
print nod_intervals
中我们得到了这个结果:
我们有当前值(向上或向下)和之前的值(向上或向下)。因此我们只需要使用此行,当前值为负,而之前为正。