ID INT NOT NULL IDENTITY(1,1)
RecordID INT NOT NULL
StartDate DATE NOT NULL
EndDate DATE NULL
我试图计算出每个记录id的开始和结束日期,即最小开始日期和最大结束日期。StartDate不可为null,所以我不需要担心这个问题,但我需要MAX(EndDate)来表示这是当前正在运行的时间跨度。
重要的是,我要保持EndDate的NULL值,并将其视为最大值。
最简单的尝试(如下)无法突出MIN和MAX将忽略NULLS的问题(来源:http://technet.microsoft.com/en-us/library/ms179916.aspx)。
SELECT recordid, MIN(startdate), MAX(enddate) FROM tmp GROUP BY recordid
我已经创建了一个SQL小提琴与基本设置完成。
http://sqlfiddle.com/#!3/b0a75
如何使SQL Server 2008服从我的意愿,从SQLFIDLE中给出的数据生成以下结果?
RecordId Start End
1 2009-06-19 NULL
2 2012-05-06 NULL
3 2013-01-25 NULL
4 2004-05-06 2009-12-01
在我的表达式中,count(enddate)
计算enddate列不为null的行数。表达式计算总行数。通过比较,您可以很容易地判断“结束日期”列中的任何值是否包含空值。如果它们相同,则结果为最大(结束日期)
。否则,大小写将默认返回null,这也是答案。这是一种非常流行的精确检查方法。
SELECT recordid,
MIN(startdate),
case when count(enddate) = count(*) then max(enddate) end
FROM tmp
GROUP BY recordid
您想要的效果是将空值视为可能的最大日期,然后在完成后再次将其替换为空值:
SELECT RecordId, MIN(StartDate), NULLIF(MAX(COALESCE(EndDate,'9999-12-31')),'9999-12-31')
FROM tmp GROUP BY RecordId
根据您的小提琴,这将返回您在所有条件下指定的准确结果。
这有点难看,但因为NULL
对您有特殊的意义,这是我能想到的最干净的方法:
SELECT recordid, MIN(startdate),
CASE WHEN MAX(CASE WHEN enddate IS NULL THEN 1 ELSE 0 END) = 0
THEN MAX(enddate)
END
FROM tmp GROUP BY recordid
也就是说,如果任何一行有一个NULL,我们想强制它成为答案。只有当没有行包含NULL时,我们才应该返回最小值(或最大值)。
问题内容: 两个或多个值中的最小值或最大值是可能的。我需要这样的东西: 我可以仅使用MySQL来实现吗? 问题答案: 您可以使用和功能来实现它。 两者都在这里描述了http://dev.mysql.com/doc/refman/5.0/en/comparison- operators.html
问题内容: 是否可以做这样的事情 要么 在CSS中? 问题答案: ,和终于可以! 从Firefox 75,Chrome 79和Safari 11.1(除外)开始。 并接受任意数量的参数。 具有语法,等效于。 并且可以嵌套。它们既可以在内部使用,也可以在外部使用,它们还可以包含数学表达式,这意味着您可以避免使用它们。 因此,原始示例可以写成:
我有一个包含一些价格值的数据帧。不,我想有一个或最好的情况下有两个数据框,每篇文章的最大值和最小值没有 0 个值。 我用DT这样做(对于maxValue,一切都很完美): 但minValue Df显示0值。我也尝试过: 但是在这里我不知道如何使用 在最好的情况下,我希望每个产品的最大值和最小值都有dfs。
生成包含位数的最低和最高整数值的最佳方法是什么? 例如: =1:Min=0,Max=9 我觉得这应该是一件非常容易完成的事情,但是我正在努力理解它背后的数学。 以下是迄今为止我得到的生成最大值的方法(基于此答案): 如果有人能帮助生成最小值,或者对上面的代码提出改进建议,我将不胜感激。 编辑 我就快到了——这似乎适用于所有情况,除非=1(最小值预期为0)
问题内容: 我有一个像这样的数组: 我需要提取最小和最大的权重值。在这个例子中 $ min_value = 175 $ max_value = 200 有什么帮助吗?谢谢 ! 问题答案: 选项1. 首先,您映射该数组以获取这些数字(而不是全部详细信息): 然后得到最小和最大: 选项2。 (仅当您没有PHP 5.5或更高版本时)与选项1相同,但要选择值,请使用: 选项3。 选项4。 如果您只需要一个
问题内容: 我的代码没有给出错误,但是没有显示最小值和最大值。代码是: 我是否需要system.out.println()来显示它,否则返回应该起作用吗? 问题答案: 您正在调用方法,但不使用返回的值。