Sql 子查询中的子查询-可能吗?
下面是我用来比较z值的sql。我把z放在子查询中,然后比较它 我的qn在下面的else语句中,我想输入另一个公式来计算其他内容,其中的信息仅在另一个名为var1的表中可用。例如,n。我想在我的else声明中加入sumn/countn作为cv结尾。然后,如果cv>10,则说明案例太大,如果<10,则说明案例太少 我应该在这个子查询中执行另一个子查询吗?请给我任何建议。谢谢Sql 子查询中的子查询-可能吗?,sql,subquery,Sql,Subquery,下面是我用来比较z值的sql。我把z放在子查询中,然后比较它 我的qn在下面的else语句中,我想输入另一个公式来计算其他内容,其中的信息仅在另一个名为var1的表中可用。例如,n。我想在我的else声明中加入sumn/countn作为cv结尾。然后,如果cv>10,则说明案例太大,如果1“请增加您的输入”10,然后是“大”或“小”,如果您需要其他信息,请通知我信息?@rayhan:SQL的味道意味着SQL数据库MS SQL Server、MySQL、Oracle和DB2。此外,请编辑您的问题以
select
z,
CASE
when z > 1 then 'Pls increase your inputs'
when z < -1 then 'Pls decrease your inputs'
else 'No comment' END as Input
from
(select
case
when S < 0 then (S/En-Eg))
else (S/En+Eg))
end as z
from var2);
你在正确的轨道上。对于像SUM和COUNT这样的聚合,我建议使用相关子查询;也就是说,子查询保证为每个键值var1.primary_key返回一个聚合值SUMn/COUNTn 例如,此查询使用相关子查询返回所需的值,使SUMn/COUNTn可用于外部查询:
SELECT v.z,
CASE WHEN v.z > 1
THEN 'Pls increase your inputs'
WHEN v.z < -1
THEN 'Pls decrease your inputs'
ELSE 'No comment' END AS INPUT,
CASE WHEN v.cv > 10
THEN 'Pls decrease your inputs'
WHEN v.cv < 10
THEN 'Pls increase your inputs'
ELSE 'No comment' END AS INPUT
FROM (SELECT CASE WHEN s < 0
THEN (s / en - eg)
ELSE (S/En+Eg) END AS 'z',
ISNULL(AVG_N.cv, 0) AS 'cv'
FROM var2
INNER JOIN
(
SELECT var1.primary_key AS 'PrimaryKey',
SUM(var1.N) / COUNT(var1.N) AS 'cv'
FROM var1
WHERE var1.primary_key = var2.primary_key
GROUP BY var1.N
) AVG_N
ON AVG_N.PrimaryKey = var2.primary_key
) v
请指定您正在尝试使用的SQL的风格。以及一个示例表定义,以及您期望的示例输出?很抱歉回复太晚。您所说的SQL风格是什么意思?表格var2 S integer En float Eg float table deft for var1 n integer样本输出的表格定义为:-Z-条件注释----------------->1“请增加您的输入”10,然后是“大”或“小”,如果您需要其他信息,请通知我信息?@rayhan:SQL的味道意味着SQL数据库MS SQL Server、MySQL、Oracle和DB2。此外,请编辑您的问题以提供其他信息,而不是使用评论。它允许您正确设置格式,并使其他人更容易看到。