0
현재 아래에 표시된보기를 스크립팅하고 있지만 최근 5 회 선택 사항에 대해 몇 가지 문제가 있습니다. 나는 대부분 int 값이지만 일부 NULL을 포함하는 테이블을 사용하고 있습니다. 내가 원하는 건 'N/A'로 출력되는 'rep'열에 대한 NULL 값을 말합니다. 그러나 case 문에서 일부 논리가 N/A를 INT로 변환하려고하면 오류가 발생합니다.불필요한 변환으로 사례 명세서 오류가 발생했습니다.
어쨌든 case 문에서 줄을 따라 생각해 보았습니다. NULLS를 N/A로 설정하고 INT로 값을 추가하려고했지만 넘어지지 않을 수도있는 부분에 대해 감사히 생각합니다.
감사합니다.
SELECT
--Name
ExerciseCultures.Name,
--Weight
CASE
WHEN weight IS NULL THEN '0'
ELSE
CASE
WHEN Type = 'Isolation' THEN
CASE
WHEN reps1 < '12'
AND reps2 < '12'
AND reps3 < '12' THEN weight
ELSE
CASE
WHEN exercisecultures.name IN ('Hammer Curls', 'Concentration Curls') THEN workoutsessions.weight + (2.0)
ELSE WorkoutSessions.weight + (2.5)
END
END
ELSE
CASE
WHEN Type = 'Compound' THEN
CASE
WHEN name = 'Bench Press' THEN
CASE
WHEN reps1 < '3'
AND reps2 < '3'
AND reps3 < '3' THEN weight
ELSE workoutsessions.weight + (2.5)
END
ELSE
CASE
WHEN reps1 < '5'
AND reps2 < '5'
AND reps3 < '5' THEN weight
ELSE workoutsessions.weight + (2.5)
END
END
END
END
END AS Weight,
-- Reps1
CASE
WHEN Reps1 = NULL THEN 'N/A'
ELSE
CASE
WHEN Type = 'Isolation' THEN
CASE
WHEN reps1 < '12'
AND reps1 >= '8' THEN reps1 + (1)
ELSE '8'
END
ELSE '5'
END
END AS Reps1,
-- Reps2
CASE
WHEN Reps2 IS NULL THEN 'N/A'
ELSE
CASE
WHEN Type = 'Isolation' THEN
CASE
WHEN reps2 < '12'
AND reps2 >= '8' THEN reps2 + (1)
ELSE '8'
END
ELSE '5'
END
END AS Reps2,
--Reps3
CASE
WHEN Reps3 IS NULL THEN 'N/A'
ELSE
CASE
WHEN Type = 'Isolation' THEN
CASE
WHEN reps3 < '12'
AND reps3 >= '8' THEN reps3 + (1)
ELSE '8'
END
ELSE '5'
END
END AS Reps3,
--Reps4
CASE
WHEN Reps4 IS NULL THEN 'N/A'
ELSE
CASE
WHEN Type = 'Isolation' THEN
CASE
WHEN reps4 < '12'
AND reps4 >= '8' THEN reps4 + (1)
ELSE '8'
END
ELSE '5'
END
END AS Reps4,
--Reps5
CASE
WHEN Reps5 IS NULL THEN 'N/A'
ELSE
CASE
WHEN Type = 'Isolation' THEN
CASE
WHEN reps5 < '12'
AND reps5 >= '8' THEN reps5 + (1)
ELSE '8'
END
ELSE '5'
END
END AS Reps5
FROM workoutsessions
JOIN exercisecultures
ON workoutsessions.ExerciseID = ExerciseCultures.ExerciseID
JOIN workoutdates
ON workoutsessions.WorkoutID = Workoutdates.WorkoutID
AND workoutdates.date = (SELECT Max(date)
FROM WorkoutDates
WHERE workouttype = 'Pull')
정확히 문제는 하나의 열에는 하나의 유형 만있을 수 있습니다. 모든 값을 VARCHAR로 변환하면 같은 열에 'N/A'와 '1'을 가질 수 있습니다. 예 : CONVERT (VARCHAR (20), reps1 + (1)) – mxix