如何:如何使用SQL SELECT联接提取最新记录

如何:如何使用SQL SELECT联接提取最新记录,sql,sql-server,tsql,Sql,Sql Server,Tsql,你好 我目前在SQL中使用select语句时遇到问题。我试图从表中提取数据。select语句为同一条记录返回多行,因为该记录有不同的个体。不过,我确实希望看到最新的单独一行 例如,结果选项卡: Row 1: 1 entry1 yes yes yes 20 50 Dawid Row 2: 2 entry1 yes yes yes 20 50 Jan Row 3: 3 entry1 yes yes yes 20 50 Charlie Row 3: 3 yes yes yes 20 50 Cha

你好

我目前在SQL中使用select语句时遇到问题。我试图从表中提取数据。select语句为同一条记录返回多行,因为该记录有不同的个体。不过,我确实希望看到最新的单独一行

例如,结果选项卡:

Row 1: 1 entry1 yes yes yes 20 50 Dawid

Row 2: 2 entry1 yes yes yes 20 50 Jan

Row 3: 3 entry1 yes yes yes 20 50 Charlie
Row 3: 3 yes yes yes 20 50 Charlie
所需结果选项卡:

Row 1: 1 entry1 yes yes yes 20 50 Dawid

Row 2: 2 entry1 yes yes yes 20 50 Jan

Row 3: 3 entry1 yes yes yes 20 50 Charlie
Row 3: 3 yes yes yes 20 50 Charlie
不幸的是,我必须使用的唯一参考是主键

ENT用于条目表,实例链接到工作流,并从实例链接到当前工作流进度。我需要帮助,只返回每个条目所有结果中最新的1个。这可能吗

我不能使用CTE或任何变量声明,因为我将生成一个不支持它的SQL报告

LEFT JOIN ENT_Instance ENTI ON ENT.entryID = ENTI.entryID
LEFT JOIN VW_Instance WFI ON ENTI.instanceID = WFI.instanceID
LEFT JOIN WF_Progress wfpg ON WFI.instanceID = wfpg.instanceID

对此,我们将不胜感激。

您可以尝试这样做:

SELECT a.*, p1.*
FROM ENT_Instance a
JOIN VW_Instance p1 ON (a.id = p1.ENTI)
LEFT OUTER JOIN ENT_Instance p2 ON (a.id = p2.ENTI AND 
    (p1.date < p2.date OR (p1.date = p2.date AND p1.id < p2.id)))
WHERE {condition};
选择一个*p1*
来自ENT_实例a
在上连接VW_实例p1(a.id=p1.ENTI)
左外连接ENT_实例p2打开(a.id=p2.ENTI和
(p1.date
您可以尝试这样做:

SELECT a.*, p1.*
FROM ENT_Instance a
JOIN VW_Instance p1 ON (a.id = p1.ENTI)
LEFT OUTER JOIN ENT_Instance p2 ON (a.id = p2.ENTI AND 
    (p1.date < p2.date OR (p1.date = p2.date AND p1.id < p2.id)))
WHERE {condition};
选择一个*p1*
来自ENT_实例a
在上连接VW_实例p1(a.id=p1.ENTI)
左外连接ENT_实例p2打开(a.id=p2.ENTI和
(p1.date
“但是我不想看到最新的单行”,然后在所需结果中显示“最后”行。“我不能使用CTE或任何变量声明,因为我将生成一个不支持它的SQL报告。”如果你受某个应用程序的限制,你也应该标记该应用程序。我为我在那里的输入错误道歉-我只想看到最新的个人。我还提出了我对应用程序的SQL包支持的担忧。这是一项正在进行的工作。这是否回答了您的问题?这回答了你的问题吗?“但是我不想看到最新的一行”,然后在所需结果中显示“最后一行”。“我不能使用CTE或任何变量声明,因为我将生成一个不支持它的SQL报告。”如果你受某个应用程序的限制,你也应该标记该应用程序。我为我在那里的输入错误道歉-我只想看到最新的个人。我还提出了我对应用程序的SQL包支持的担忧。这是一项正在进行的工作。这是否回答了您的问题?这回答了你的问题吗?