我有一个SQL查询,如下临时列值:检索基于列的子查询中的价值
SELECT SUM(Z.MaxMarks) AS TotMaxMarks,
SUM(Z.MinMarks) AS TotMinMarks,
SUM(Z.SecuredMarks) AS TotSecuredMarks,
Z.IsPass
FROM (
SELECT Y.*
FROM (
SELECT X.MaxMarks,
X.SecuredMarks,
(X.MaxMarks * X.PassPercentage/100) AS MinMarks,
CASE WHEN ((X.MaxMarks * X.PassPercentage/100) < X.SecuredMarks) THEN 'True' ELSE 'False' END AS IsPass,
row_number() OVER (
PARTITION BY ChapterID ORDER BY UpdatedDate DESC
) AS SequencNo
FROM (
SELECT C.ChapterID,
T.MinimumMarks AS PassPercentage,
(
SELECT Sum(Q.MaximumMarks)
FROM MstQuestion Q,
TransStudentAnswer SA
WHERE Q.QuestionID = SA.QuestionID AND SA.TestAllotmentID = TA.TestAllotmentID
) AS MaxMarks,
(
SELECT Sum(Score)
FROM TransStudentAnswer
WHERE TestAllotmentID = TA.TestAllotmentID
) AS SecuredMarks,
TA.UpdatedDate
FROM TransTestAllotment TA,
MstStudent S,
MstBatchDetails B,
MstTest T,
MstChapter C
WHERE TA.StudentID = 47 AND TA.BatchID = 10 AND T.TestID = TA.TestID AND S.StudentID = TA.StudentID AND B.BatchID = TA.BatchID AND T.ChapterID = C.ChapterID AND TA.IsAttempted = 'True' AND TA.IsEvaluated = 'True'
) X
) Y
WHERE SequencNo = 1
) Z
GROUP BY Z.IsPass
它返回的结果如下:
+-------------+-------------+-----------------+--------+
| TotMaxMarks | TotMinMarks | TotSecuredMarks | IsPass |
+-------------+-------------+-----------------+--------+
| 20 | 10 | 3 | False |
| 30 | 15 | 28 | True |
+-------------+-------------+-----------------+--------+
是否有可能修改此查询,使其返回一个记录,其中SUM(Z.MaxMarks),SUM(Z.MinMarks),SUM(Z.SecuredMarks) and TempIsPass column
的值将为true
,如果Z的所有记录中的列值为Z.Ispass is true
,否则应该为false。