[英]Multiple Subqueries and Conditions
如果我有一个子查询,它执行以下操作;
Select
Min(S_Date)
, Col1
, Col2
From
(
Select Dateadd(whatever) as S_Date, Userid
from tbl1 as t
where S_Date >'today'
)
如何添加另一个子句,以便仅在满足其他条件的情况下才选择来自Col1的值,即col3 ='doit'。 我想我很难理解如何在子查询的不同位置使用两个where子句。
您需要使用CASE语句:
SELECT
s_date
,CASE Col3 WHEN 'doit' THEN Col1 ELSE Col2 END AS selection
FROM (
SELECT
Sdate
, Col1
, Col2
, Col3
FROM foo
WHERE s_Date > GETDATE()
) AS sub
要使用诸如MIN()之类的聚合函数,您需要按未聚合的列进行分组...
Select
Min(S_Date)
, Col1
, Col2
From
(
Select Dateadd(whatever) as S_Date, Userid
from tbl1 as t
where S_Date >'today'
)
GROUP BY
Col1,
Col2
然后,如果您希望未聚合的列为条件列,则再次按这些条件值分组...
Select
Min(S_Date)
, CASE WHEN col3 = 'doit' THEN Col1 ELSE Col2 END AS conditional_field
From
(
Select Dateadd(whatever) as S_Date, Userid
from tbl1 as t
where S_Date >'today'
)
GROUP BY
CASE WHEN col3 = 'doit' THEN Col1 ELSE Col2 END
不过,我不是100%知道您实际想要实现什么。 您是否有样本数据集以及所需的结果,并说明了结果与源之间的关系?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.