2017-09-04 21 views

回答

1

做一个GROUP BY。使用HAVING只与最后SaleDate <返回ACCT的= 2015:

select acct 
from tablename 
group by acct 
having max(SaleDate) <= 2015 

如果希望所有列,所有行,这些帐户:

select t.* 
from tablename t 
join (select acct, max(SaleDate) as maxSaleDate 
     from tablename 
     group by acct) t2 
    on t.acct = t2.acct 
where t2.maxSaleDate <= 2015 
+0

有没有办法结合有和在哪里?例如:从acct中选择acct from acct having min(saledate)> = 2015 where acct in('A','B'); – Tony

+0

是的,在执行GROUP BY和HAVING之前,可以使用WHERE过滤掉行。在GROUP BY子句之前放置WHERE。 – jarlh

1

如果在您的结果需要每一笔交易,你可以使用NOT EXISTS

SELECT * 
FROM YourTable as T 
WHERE NOT EXISTS(SELECT 1 FROM YourTable 
       WHERE SaleDate >= 2015 
       AND Acct = T.Acct); 
相关问题