Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个列的sql最小值,另一个列组的sql最小值为三分之一_Sql_Sql Server 2008 - Fatal编程技术网

一个列的sql最小值,另一个列组的sql最小值为三分之一

一个列的sql最小值,另一个列组的sql最小值为三分之一,sql,sql-server-2008,Sql,Sql Server 2008,我从三个表中选择了这个查询 select min(t.ReminderDt) as 'rem dt', m.Group_Id, m.AccountNumber from ACE_AccsLevelTran t, ACE_AccsLevelMaster m where t.MasterAccNumber = m.AccountNumber group by m.Group_Id, m.AccountNumber; 这导致: rem dt

我从三个表中选择了这个查询

select 
    min(t.ReminderDt) as 'rem dt',  
    m.Group_Id, m.AccountNumber 
from 
    ACE_AccsLevelTran t, ACE_AccsLevelMaster m 
where 
    t.MasterAccNumber = m.AccountNumber 
group by  
    m.Group_Id, m.AccountNumber;
这导致:

rem dt | Group_Id| AccountNumber
--------------------------------    
2/8/2013 | 3 | 4216985
2/22/2013 | 4 | 4274863
2/7/2013 | 3 | 4366383
2/28/2013 | 4 | 7151712
我如何获得3和4的最小日期的行,如结果所示-

2/7/2013 | 3 | 4366383
2/22/2013 | 4 | 4274863

只需将帐号从组中删除,并在
选择
行上用
min()
max()
环绕即可:

select min(t.ReminderDt) as 'rem dt',  m.Group_Id, min(m.AccountNumber)
from ACE_AccsLevelTran t,     ACE_AccsLevelMaster m 
where t.MasterAccNumber=m.AccountNumber
group by  m.Group_Id
返回任意帐号。要获取具有最小值的行,最好的方法是使用
row\u number()


此外,您还应该学习本查询中使用的ANSI标准联接语法。

如果您的帐号也是唯一的,您可以通过以下方式进行:

Select m.Group_Id ,X.MinReminderDT,m.AccountNumber 
from ACE_AccsLevelMaster m join(
select min(t.ReminderDt) as MinReminderDT,t.MasterAccNumber
from ACE_AccsLevelTran t
Group By t.MasterAccNumber) X on X.MasterAccNumber=m.AccountNumber

-这种旧式的逗号分隔表列表样式在ANSI-92 SQL标准(20年前!)。请停止使用它这将不起作用,因为一个组id有多个帐号。
Select m.Group_Id ,X.MinReminderDT,m.AccountNumber 
from ACE_AccsLevelMaster m join(
select min(t.ReminderDt) as MinReminderDT,t.MasterAccNumber
from ACE_AccsLevelTran t
Group By t.MasterAccNumber) X on X.MasterAccNumber=m.AccountNumber