在视图下方运行时,出现错误“ 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';
答案 0 :(得分:1)
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;