Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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
如何包含另一列而不必将其放置在GROUPBY子句中?[SQL Server 2005]_Sql_Sql Server 2005 - Fatal编程技术网

如何包含另一列而不必将其放置在GROUPBY子句中?[SQL Server 2005]

如何包含另一列而不必将其放置在GROUPBY子句中?[SQL Server 2005],sql,sql-server-2005,Sql,Sql Server 2005,我使用下面的查询获取已添加的最新序列号 SELECT SerialNo, MAX(AddDate) AS AddDate FROM tst_EquipmentItem WHERE ControlNo = 'TM-00012' GROUP BY SerialNo ORDER BY AddDate 输出: SerialNo///AddDate ======================================= TM-0001

我使用下面的查询获取已添加的最新序列号

SELECT 
    SerialNo, 
    MAX(AddDate) AS AddDate
FROM 
    tst_EquipmentItem 
WHERE 
    ControlNo = 'TM-00012'
GROUP BY 
    SerialNo
ORDER BY 
    AddDate
输出:
SerialNo///AddDate
=======================================
TM-00012///2008-08-05 10:25:00.000
现在在tst_设备表中有一个ControlNo列。如果在上面的语句中包含ControlNo,则会得到不同的输出

输出
SerialNo///ControlNo///AddDate
====================================================
TM-00012///TM-CGI-F-0027///2004-02-09 08:20:00.000
TM-00012///TM-EN-N-0068///2008-08-05 10:25:00.000

如何在不必将ControlNo列放入GROUP BY子句的情况下包含该列,以便为每个SerialNo获取最新的ControlNo?

它必须位于GROUP BY子句中或是计算值的一部分,范例

SUM(ControlNo), MAX(ControlNo), MIN(ControlNo).

在你的情况下,我建议max,假设数字增加。

在不知道你的数据的情况下,我会:

select distinct t.serialNo, e.controlNo, t.addDate
from tst_EquipmentItem e
join (
    select serialNo, max(addDate) as addDate
    from tst_EquipmentItem 
    group by serialNo
) t on t.serialNo = e.serialNo and t.addDate = e.addDate

我不认为我可以使用SUM(),因为它的数据类型是varchar,MAX()似乎不起作用。然后将它放在group by clauseyeah中,SUM只是一个不同函数的示例,您可以使用它来代替group by。我可以问一下为什么不将
ControlNo
放在
group by
部分?你期望的结果是什么?因为我得到的是两个不同的数字,而不是最新的数字。你能检查我的答案,然后告诉我是否可以(根据你的期望)?这个。但我也加入了addDate来将它们联系在一起;现在我得到了我需要的输出@Kurusu,这是我的,我将回滚到该版本:-)。这与按t.serialNo从tst_设备项目e组中选择t.serialNo、Max(t.controlNo)、Max(t.addDate)相同,除非您的controlNo不是递增的(即,最新的可能不是最高的数字)