我有一个SQL Server 2012表,其中包含数十万行地质数据(请参阅下面的屏幕截图)。这些是针对不同gCode
的{{1}} s的记录。
我需要对CountryID
的所有gCode
进行联合选择,并假设以下条件:
CountryID = 112
明显大于Xc
。至少200%Xm
和Xm
相等。提供的屏幕截图有两个例子。在这两种情况下:
Xc
Xm = Xc = 1395
明显大于Xc
Xm
这意味着我希望将这两条记录放入记录集。
我知道我的查询必须以某种方式在同一个表中执行gCode
,但到目前为止,我不知道如何编写查询。我写了一些查询,但没有带来预期的结果。
答案 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