Sql 如何编写只返回销售日期小于今天的帐户的查询?
从表面上看,这似乎是一个简单的where子句,但鉴于下面的数据,我只希望我的查询返回帐户B的销售交易,条件是只显示那些在2015年之后没有任何销售日期的帐户Sql 如何编写只返回销售日期小于今天的帐户的查询?,sql,where,Sql,Where,从表面上看,这似乎是一个简单的where子句,但鉴于下面的数据,我只希望我的查询返回帐户B的销售交易,条件是只显示那些在2015年之后没有任何销售日期的帐户 Acct Sale Date A 2030 A 2018 A 2015 B 2015 B 2014 B 2013 C 2020 C 2015 C 2012 按分组。使用HAVING仅返回上次SaleDate的账户按分组。使
Acct Sale Date
A 2030
A 2018
A 2015
B 2015
B 2014
B 2013
C 2020
C 2015
C 2012
按分组。使用
HAVING
仅返回上次SaleDate的账户按分组。使用HAVING
仅返回带有上次销售日期的账户如果您需要结果中的每笔交易,您可以使用NOT EXISTS
:
SELECT *
FROM YourTable as T
WHERE NOT EXISTS(SELECT 1 FROM YourTable
WHERE SaleDate >= 2015
AND Acct = T.Acct);
如果您需要结果中的每个事务,您可以使用NOT EXISTS
:
SELECT *
FROM YourTable as T
WHERE NOT EXISTS(SELECT 1 FROM YourTable
WHERE SaleDate >= 2015
AND Acct = T.Acct);
有没有一种方法可以将拥有与何处结合起来?比如:按账户的最小值(saledate)>=2015从tablename组中选择账户,其中账户位于('A','B');是,其中可用于在执行分组依据和HAVING之前过滤掉行。把WHERE放在groupby子句之前。有没有一种方法可以将have和WHERE结合起来?比如:按账户的最小值(saledate)>=2015从tablename组中选择账户,其中账户位于('A','B');是,其中可用于在执行分组依据和HAVING之前过滤掉行。在GROUPBY子句之前放置WHERE。
SELECT *
FROM YourTable as T
WHERE NOT EXISTS(SELECT 1 FROM YourTable
WHERE SaleDate >= 2015
AND Acct = T.Acct);