<p>我有这样的数据:</p>
<pre><code>data_
company result ID group
cars 50 q1 ground
boats 0 q1 water
bicycles 50 q2 ground
cars 75 q2 water
horses 0 q2 ground
foxes 50 q5 ground
.....etc
</code></pre>
<p>所以我想问以下问题:</p>
<p>哪些地面公司的结果不同于汽车公司,在哪个季度(ID)发生了这种情况</p>
<p>实质上,上述结果将是:</p>
<pre><code>horses, q2 (result: 0, differs from cars 75)
bicycles, q2 (result: 50, differs from cars 75)
</code></pre>
<p>我正在使用Excel或Access来完成此操作。但如果有人有更好的建议,我会很高兴听到的</p>
<p>我觉得我可以在Excel中管理一个半自动的方法,获取基线数据,然后使用VLOOKUP和IF公式组合提问。比如说:</p>
<pre><code>baseline_
company result id
cars 50 q1
cars 75 q2
</code></pre>
<p>然后问:哪些Q1地面组的结果不同于50?哪一个Q2地面组的结果不同于75</p>
<p>即使这样分开,也有可能:</p>
<pre><code>groups_ground
company result id
cars etc. etc.
foxes etc. etc.
horses etc. etc.
bicycles etc. etc.
</code></pre>
<p>但所有这些方法都有点乏味,因为我的数据是500k+行</p>
<p>SQL我在想:</p>
<pre><code>SELECT * FROM data_ D
LEFT JOIN baseline_ B
ON D.result=!B.result;
</code></pre>
<p>您的SQL是正确的。但您需要查找匹配项,然后选择不匹配项,因此需要更多条件:</p>
<pre><code>SELECT d.*
FROM data d LEFT JOIN
data dcars
ON d.result = dcars.result and
dcars.company = 'cars'
WHERE d.group = 'ground' and
dcars.company is null;
</code></pre>