sql - 在 SQL View 错误下出现问题(MAX 函数需要 1 个参数。)
问题描述
在视图下方运行时出现错误“MAX 函数需要 1 个参数”。请任何人帮助我。
CREATE VIEW SQL_RP("ID_NUMERIC", "SAMPLING_POINT", "SAMPLED_DATE", "COMPOSITE_INTERVAL", "TEST_NUMBER", "ANALYSIS", "TEST_COUNT", "COMPONENT_NAME", "RESULT_VALUE", "RESULT_TEXT", "UNITS", "RESULT_TYPE", "RESULT_STATUS", "ENTERED_BY", "UPDATED_DATE")
AS
SELECT sample.id_numeric,
sample.sampling_point,
sample.sampled_date,
sample.composite_interval,
test.test_number,
test.analysis,
test.test_count,
result.name AS component_name,
result.Value AS result_value,
result.text AS result_text,
result.units,
result.result_type,
result.status AS result_status,
result.entered_by,
MAX (ISNULL(test.date_authorised, (GETDATE - 365*100)), ISNULL(result.entered_on, (GETDATE - 365*100)), ISNULL(result.date_authorised, (GETDATE - 365*100)), ISNULL(esav.audit_date, (GETDATE - 365*100)) ) AS updated_date
FROM sample
INNER JOIN test
ON sample.id_numeric = test.sample
INNER JOIN result
ON test.test_number = result.test_number
LEFT OUTER JOIN eims_sample_audit_view esav
ON esav.id_numeric = sample.id_numeric
WHERE result.status <> 'U';
解决方案
MAX()
是一个聚合函数,而不是一个标量函数。您真正想要的是GREATEST()
,但 SQL Server 没有这样的功能(尽管大多数数据库都有)。
由于空值,这可能会很痛苦CASE
,所以最简单的方法可能是OUTER APPLY
在FROM
子句中:
SELECT . . .,
v.updated_date
FROM sample JOIN
test
ON sample.id_numeric = test.sample
result JOIN
ON test.test_number = result.test_number LEFT JOIN
eims_sample_audit_view esav (alias) -- huh?
ON esav.id_numeric = sample.id_numeric OUTER APPLY
(SELECT MAX(dte) as updated_date
FROM (VALUES (test.date_authorised),
(result.entered_on),
(result.date_authorised),
(esav.audit_date),
(GETDATE() - 365*100)
) v(dte)
) v;
推荐阅读
- pandas - “utf-8”编解码器无法解码位置 0 的字节 0x95:无效的起始字节
- javascript - 如何通过只发出一次命令来自动循环歌曲
- c - 动态内存分配中的分段错误(核心转储)错误
- php - php - 函数结果打印在错误的位置
- visual-studio - Visual Studio Community 2019 中的解决方案资源管理器如何刷新?
- angular - Angular Firebase 检索时间戳作为日期
- java - 调整 JFrame 大小时 JPanel 会缩小
- c++ - 如何使用 UDP 通过网络正确发送 x264 编码帧?
- python - 如何根据通过 Pandas 从 LAMMPS 输出文件导入的键合数据将原子细分为三个组?
- php - 在 Apache 2.4/PHP 7.4.4 中禁用 OpenSSL 支持