我有一张名为“病人”的表,看起来像
PatientName DateOftest Eye L1 L2 L3 L4 L5
Mike 17-02-2009 L 23 25 40 32 30
Mike 17-02-2009 R 25 30 34 35 24
Bill 08-03-2006 L 20 24 30 24 25
Bill 08-03-2006 R 18 25 27 30 24
现在,Iam在结果之后选择患者姓名和Dateoftest,眼睛为“Binocular”和“Sum”,它是该测试日期的L1,L2,L3,L4,L5的最高值的总和。 / p>
结果:
PatientName DateOftest Eye Sum
Mike 17-02-2009 Binocular 160
Bill 08-03-2006 Binocular 130
这里“总和”是迈克左眼和右眼的最高值之和,即160和比尔是130。
答案 0 :(得分:2)
DECLARE @Data AS TABLE
(
PatientName varchar(10) NOT NULL,
DateOfTest date NOT NULL,
Eye char(1) NOT NULL,
L1 tinyint NOT NULL,
L2 tinyint NOT NULL,
L3 tinyint NOT NULL,
L4 tinyint NOT NULL,
L5 tinyint NOT NULL
)
INSERT @Data
VALUES
('Mike', '20090217', 'L', 23, 25, 40, 32, 30),
('Mike', '20090217', 'R', 25, 30, 34, 35, 24),
('Bill', '20060308', 'L', 20, 24, 30, 24, 25),
('Bill', '20060308', 'R', 18, 25, 27, 30, 24);
SELECT
d.PatientName,
d.DateOfTest,
Eye = 'Binocular',
[Sum] = MAX(L1) + MAX(L2) + MAX(L3) + MAX(L4) + MAX(L5)
FROM @Data AS d
GROUP BY
d.PatientName,
d.DateOfTest;
答案 1 :(得分:1)
SELECT PatientName, DateOfTest, "Binocular" AS Eye,
MAX(L1 + L2 + L3 + L4 + L5) AS [Sum]
FROM Patients
GROUP BY PatientName, DateOfTest, Eye
答案 2 :(得分:0)
使用GROUP BY
和MAX
:
SELECT PatientName,
DateOfTest,
MAX(L1) + MAX(L2) + MAX(L3) + MAX(L4) + MAX(L5) SummedVal,
'Binocular' Eye
FROM Patients
GROUP BY PatientName, DateOfTest, Eye
这是一个快速Fiddle。
请注意使用MAX(L1 + L2 ...)与MAX(L1)+ MAX(L2)的区别... - 第一个不会产生正确的结果。
祝你好运。答案 3 :(得分:0)
这不会搜索整个列,这将搜索特定日期和特定患者的最大值。因为我们在这里使用组。
select PatientName,
DateOftest,
Max(L1)+Max(L2)+Max(L3)+Max(L4)+Max(L5) as Sum,
'Binocular' Eye
from table
group by PatientName,DateOftest,Eye