sql - 需要创建一个 SQL 脚本来获得这个结果

标签 sql sql-server sql-scripts

假设我有这个:

+-----+------+
| ID  | Var  |
+-----+------+
| 100 | 2    |
| 100 | 4    |
| 100 | NULL |
+-----+------+
| 425 | 1    |
| 425 | 2    |
| 425 | 3    |
| 425 | 7    |
+-----+------+
| 467 | NULL |
| 467 | NULL |
+-----+------+
| 500 | 3    |
| 500 | NULL |
| 500 | NULL |
+-----+------+

即使这些 ID 中有一个关联了 NULL Var,我也需要从脚本输出中删除该值的所有 ID。所以,我会以这个结束。

+-----+------+
| ID  | Var  |
+-----+------+
| 425 | 1    |
| 425 | 2    |
| 425 | 3    |
| 425 | 7    |
+-----+------+

但是,我只想要这些变量之一(最大的)。哦,这些变量是日期,尽管我在这里将它们放在简单的数字中以便于阅读。它们将采用这种格式:

YYYY-MM-DD HH:MM:SS

最后...我想要这样的输出:

+-----+------+
| ID  | Var  |
+-----+------+
| 425 | 7    |
+-----+------+

我想我可能需要一个 CASE 语句来执行此操作。 另外,我不知道这是否有帮助,但我的输出中还有其他几列,但我只需要测试一下这个变量是否有 NULL 值。

(DateDroppedOff 是 Var)

我当前的脚本(稍微简化为只有相关信息):

SELECT TOP 100000 [t1].[ID]
      ,[t1].[DateCreated]
      ,[t3].[DateDroppedOff]    
      ,[t3].[HasBeenDroppedOff]
      ,[t3].[ManifestItemID]
      ,[t3].[ManifestID]
FROM [t1]
LEFT JOIN t2 ON t1.ID = t2.ID
LEFT JOIN t3 ON t2.MovementID = t3.MovementsID
ORDER BY t1.ID

谢谢!!!

最佳答案

一般情况下可以这样做

select id, max(var)
from your_table
group by id
having sum(case when var is null then 1 else 0 end) = 0

关于sql - 需要创建一个 SQL 脚本来获得这个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45332254/

相关文章:

sql-server - 如何使用 sqlcmd.exe 调用带有参数的存储过程?

sql-server - 检查可为空列是否稀疏或不在 SQL Server 中查询

mysql - 事件 sql 脚本中的 MySQL 语法错误。已使用 Delimeter

sql - object_id() 与 sys.objects

mysql:列值作为选择结果中的列名

C# ExecuteScalar() null COUNT 与 SELECT

sql select,获取每辆车的最新条目

MySQL语法错误: where not exists

sql-server - SQL Server - 比较 select 子句中的 int 值

sql - 将数据从 MS SQL 导入 MySQL