问题非常简单 - 我需要获取特定值的第一次出现以避免重复。有问题的表记录了应用程序中的每个用户交互,因此有数百万行可能重复信息。我将提供一些测试记录,以显示重复信息的含义,然后我的查询以显示我如何提取此信息。
ID CreateDate KeyValue OldValue NewValue
01 1/2/2016 12:46:53 000001-1-0 NULL O
02 1/2/2016 12:47:58 000001-1-0 NULL O
03 1/2/2016 12:46:53 000001-2-0 NULL O
SELECT DISTINCT CreateDate, KeyValue
FROM capp.dbo.Log
WHERE Message = 'stat'
AND OldValue IS NULL
AND NewValue = 'O'
AND CreateDate >= '01/01/2016'
我希望查询引入的结果应该只是第1行和第3行,并排除第2行,因为它有一个重复的KeyValue。但是,我尝试了DISTINCT ON(KeyValue),MIN(KeyValue)和GROUP BY语句,但第二条记录仍然存在。理想情况下,正如我所写的那样,第二条记录永远不会被插入到表中,因为OldValue将是" O"而不是" NULL",但我无法控制这个第三方应用程序。
我认为答案很简单,但我目前正在努力思考。
答案 0 :(得分:2)
您可以使用import React from 'react';
import Link from 'react-router'
export default class App extends React.Component {
render() {
return(
<div className="wrapper">
<header>
<h1>Rest Test Contact List</h1>
<nav>
<ul className="navigation">
<li><Link to="/contact">Contact</Link></li>
<li><Link to="/about">About</Link></li>
</ul>
</nav>
</header>
{this.props.children}
</div>
)
}
}
:
ROW_NUMBER
答案 1 :(得分:0)
潜在的问题是SQL不承诺数据是以任何特定顺序,也不是select语句将以特定顺序返回数据。 添加ROW_NUMBER的答案将为每条记录提供唯一的KeyValue和CreateDate,但这可能不是您期望的记录。如果您有所需的记录,请尝试添加另一个可用于选择的字段。