SQL Group by Max Date Including Null
下面的代码用相同的项目名称和不同的日期对多个记录进行分组。SQL Group by Max Date Including Null
问题是日期字段中的某些日期为空。我需要这种代码的方式来包含最大日期或空值。
我尝试添加或受日期为空,但那时,只是让我回到我的问题与具有多个记录
原始SQL
SELECT t1.Project_Name, t1.IssueNmb, t1.Date
FROM Milestones_Detail_Report_Table AS t1
WHERE (((t1.Date)=(SELECT Max(t2.Date)
FROM Table_Name t2
WHERE t2.Project_Name=t1.Project_Name
GROUP BY t2.Project_Name)))
SQL与OR
SELECT t1.Project_Name, t1.IssueNmb, t1.Date
FROM Milestones_Detail_Report_Table AS t1
WHERE (((t1.Date)=(SELECT Max(t2.Date)
FROM Table_Name t2
WHERE t2.Project_Name=t1.Project_Name
GROUP BY t2.Project_Name))) OR (((t1.Date) Is Null));
项目表:表名
Project_Name | IssueNmb | Date
------------------------
Car | 1 | 1/1/15
Car | 1 | 2/1/15 <--This record populates
House | 1 | <--This record does NOT populate
你可能想这where
条款:
WHERE (t1.Date IS NULL) OR
(t1.Date = (SELECT iif(COUNT(*) <> COUNT(t2.Date), NULL, Max(t2.Date))
FROM Table_Name t2
WHERE t2.Project_Name = t1.Project_Name
)
)
这将把NULL
的最大日期,所以会出现在子查询没有匹配如果t2.Date
任何值NULL
给定项目。
请注意,子查询中不需要group by
。
不知道't2'中实际的数据是什么意思,在子查询中加入'LIMIT 1' – 2015-04-01 19:58:37
这就是我输入的内容,并且在表达式中得到了'Unfixed function'iff' SELECT T1.Project_Name,t1.IssueNmb,t1.Date FROM TableName AS t1 WHERE(((t1.Date)is Null or(t1.Date)=(SELECT iff(COUNT(*) COUNT(t2。 ()); NULL,Max(t2.Date)) FROM TableName WHERE t2.Project_Name = t1.Project_Name )));' – user4581436 2015-04-01 20:19:46
@ user4581436 ...该函数是'iif()'不是'iff()' 。 – 2015-04-01 22:20:13
请显示样品结果。你是什么意思“我需要一种方法来让这个代码包含最大日期或空值”? – 2015-04-01 19:50:23
您可以用默认值替换null,假设:'1899-01-01'。使用'Iif()'函数 – 2015-04-01 19:50:24