繁体   English   中英

多个子查询和条件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM