加入选择下一记录中给出的假设标准

时间:2017-09-17 08:59:35

标签: sql inner-join criteria

我有一个SQL Server 2012表,其中包含数十万行地质数据(请参阅下面的屏幕截图)。这些是针对不同gCode的{​​{1}} s的记录。

我需要对CountryID的所有gCode进行联合选择,并假设以下条件:

    CountryID = 61的
  • CountryID = 112明显大于Xc。至少200%
  • 对于CountryID = 112,
  • XmXm相等。

提供的屏幕截图有两个例子。在这两种情况下:

    对于CountryID = 112 ,
  • Xc
  • 对于CountryID = 61 Xm = Xc = 1395明显大于Xc Xm

这意味着我希望将这两条记录放入记录集。

我知道我的查询必须以某种方式在同一个表中执行gCode,但到目前为止,我不知道如何编写查询。我写了一些查询,但没有带来预期的结果。

Example from my table

1 个答案:

答案 0 :(得分:1)

这是对SQL的直接翻译:

header(...);

我更喜欢相关的子查询:

with cte1 as
 ( select gCode 
   from tab
   where CountryID = 112
     and xm = xc -- Xm and Xc for CountryID=112 is equal.
 ),
cte2 
 ( select gCode 
   from tab
   where CountryID = 61
     and xc/xm >= 3 -- Xc for CountryID=61 is significantly greater than Xm. At least 200%
 )
select cte1.gCode
from cte1
join cte2
on cte1.gCode = cte2.gCode