我在 postgres 中创建了一个新报告 - 它应该仅在有 3 个已完成的案例时运行,然后根据个别案例确定最终结果(通过/失败)。根据是通过还是失败,需要显示不同的信息。
我有我需要的三个主要查询,但现在我不知道如何将它们组合成一个。
包含案例条件逻辑的主要查询在这里:
SELECT CASE
WHEN (SELECT COUNT(*) FROM "Alloc" WHERE "CodeID" = 1 AND "StatusCodeID" IN (2,6)) = 3
THEN
--Determine if case passes based on the 3 individual Assessments
CASE
WHEN (SELECT COUNT(*) FROM "Answer" ans
LEFT JOIN "AnswerOption" ansop ON ansop."AnswerOptionID" = ans."AnswerOptionID"
LEFT JOIN "QuestionTextInstance" qtxti ON qtxti."QuestionTextInstanceID" = ans."QuestionTextInstanceID"
LEFT JOIN "Alloc" aloc ON aloc."AllocID" = qtxti."AllocID"
LEFT JOIN "QuestionText" qtxt ON qtxt."QuestionTextID" = qtxti."QuestionTextID"
LEFT JOIN "Code" bcode ON aloc."CodeID" = bcode."CodeID"
WHERE bcode."CodeID" = 1 AND qtxt."QuestionTextID" = 11 AND ans."Value" = 0) >= 1 --At least 2 must have answered 'Yes'
THEN 'Passed' --Execute 'Pass.sql'
ELSE 'Did NOT Pass' --Execute 'NotPass.sql
END
ELSE 'Report did Not Run'
END
这可以正确运行并根据条件给出正确的结果。但是,在内部语句的THEN
andELSE
块中CASE
,我需要显示不同的信息,包括许多列和许多连接(我目前在不同.sql
的文件中)而不是Pass
/ Did NOT Pass
,但我找不到实现这一点的方法,因为它似乎THEN
或块内的任何查询ELSE
只能返回一个值。
我怎样才能做到这一点?