Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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 Server_Sql Server 2008 - Fatal编程技术网

sql-选择最大值嵌套查询的不同值

sql-选择最大值嵌套查询的不同值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,试图在找到max(dateoccurrent)的行中获取Userid值。我在所有这些子查询中迷失了方向 我正在使用SQLServer2008 注意:由于SELECT语句中另一个较大查询的一部分,因此需要返回单个值 我如何获取最大日期(有效)的示例;但是现在我需要与这个子查询max date关联的用户ID ( SELECT MAX(LC.[Date]) FROM table_LC LC LEFT JOIN table_LM LM ON LC.[c] = LM.[c]

试图在找到max(dateoccurrent)的行中获取Userid值。我在所有这些子查询中迷失了方向

我正在使用SQLServer2008

注意:由于SELECT语句中另一个较大查询的一部分,因此需要返回单个值

我如何获取最大日期(有效)的示例;但是现在我需要与这个子查询max date关联的用户ID

    (

    SELECT MAX(LC.[Date]) 

    FROM table_LC LC LEFT JOIN table_LM LM ON LC.[c] = LM.[c] AND LC.[L] = LM.[L]

    WHERE LM.[c] = LC.[c] AND LM.[L] = LC.[L] AND LC.[LC] = 'ABCDEF'

    ) as [ABCDEF_Date],

我无法看到您的整个查询,但您可能希望改用窗口函数:

max(case when lc.lc = 'ABCDEF' then lc.[DATE] end) over () as maxdate
这可能并不完全正确。很难说没有看到问题的其余部分

获取用户id将使用类似的逻辑

编辑:

您也可以通过将其放在
from
子句中获得相同的效果(它不相关):

使用此子查询-


(SELECT Userid,
        Date
FROM   (SELECT Userid, Date FROM table_LC) b
WHERE  date = (SELECT MAX(LC.[Date]) 
FROM table_LC LC LEFT JOIN table_LM LM ON LC.[c] = LM.[c] AND LC.[L] = LM.[L]
WHERE LM.[c] = LC.[c] AND LM.[L] = LC.[L] AND LC.[LC] = 'ABCDEF')) 

GROUPBY子句允许您选择其他非聚合列

我假设“用户ID”字段在LC表中,但它也可以很容易地在LM表中

SELECT
    LC.[UserID]
    , MAX(LC.[Date]) 

FROM
    table_LC LC
    LEFT JOIN table_LM LM ON 
        LC.[c] = LM.[c] AND LC.[L] = LM.[L]

WHERE LM.[c] = LC.[c] AND LM.[L] = LC.[L] AND LC.[LC] = 'ABCDEF'

GROUP BY LC.[UserID]
@Gordon提到了另一个很好的方法,即使用SELECT TOP 1和ORDER BY

SELECT TOP 1
    LC.[UserID]
    , LC.[Date]

FROM
    table_LC LC
    LEFT JOIN table_LM LM ON 
        LC.[c] = LM.[c] AND LC.[L] = LM.[L]

WHERE LC.[LC] = 'ABCDEF'

ORDER BY LC.[Date] DESC
SELECT TOP 1
    LC.[UserID]
    , LC.[Date]

FROM
    table_LC LC
    LEFT JOIN table_LM LM ON 
        LC.[c] = LM.[c] AND LC.[L] = LM.[L]

WHERE LC.[LC] = 'ABCDEF'

ORDER BY LC.[Date] DESC