我需要GROUP BY - CASE表达式中的最新值

时间:2017-08-16 15:02:28

标签: sql tsql

我试图在CASE条款的T-SQL中创建GROUP BY表达式,这基本上是在询问是否有a.id { {1}}然后提供与其关联的b.namewhere a.id = b.id)。

到目前为止我所做的是:(更新查询)

SELECT b.name, ...
    MAX(CASE
         WHEN a.id IS NOT NULL
         THEN b.name END) 
FROM ...
LEFT JOIN table_b AS b
   ON b.id = a.id
GROUP BY ...

因为它的T-SQL,CASE必须是聚合函数或GROUP BY子句,这就是我加入MAX的原因。但是,如果没有GROUP BY子句,则会有4个值。我需要a.datetime定义的最新值。我怎样才能将这个条件放在CASE声明中?

2 个答案:

答案 0 :(得分:0)

如果我理解正确(从现在开始尝试包括完整查询,表数据\结构,输入和所需输出),您可以从开始加入它们然后选择MAX()

SELECT ....
       MAX(b.name)
FROM YourTable a
LEFT JOIN YourTable b
 ON(a.id = b.id)
...
GROUP BY ....

如果匹配,则会获取该名称。否则 - 它将是NULL

答案 1 :(得分:0)

您的上一次修改发生了很大变化。您应该使用#region

ROW_NUMBER