需要创建一个 SQL 脚本来获得这个结果
Need to create an SQL script to get this result
假设我有这个:
+-----+------+
| 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
另一种方法:
SELECT ID, MAX(VAR) as VAR
FROM table A
WHERE NOT EXISTS (SELECT 1 FROM table B WHERE A.ID = B.ID and B.VAR IS NULL)
GROUP BY ID
假设我有这个:
+-----+------+
| 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
另一种方法:
SELECT ID, MAX(VAR) as VAR
FROM table A
WHERE NOT EXISTS (SELECT 1 FROM table B WHERE A.ID = B.ID and B.VAR IS NULL)
GROUP BY ID