와우! 간단한 일을하기에는 너무 복잡합니다. Max(Field-Constant1,Constant2)
.
내 목표 : 하나의 필드에 따라 값을 조정하지만 계산 된 값을 상수보다 작게 두지 마십시오.두 필드 테이블에
Expample 행 (키 필드, ValueField는) : (Constant1 = 6이 Constant2 = 1 일 때), 나는 (그것을 명확히하기 위해 전체 수학을 넣어
1 10
2 5
3 8
4 Null
나는 반환하는 선택을 할 마지막 = 후 상단 가장 오른쪽 부분은) 내가 원하는 것입니다 :
1 Max(10-6,1)=Max(4,1)=4
2 Max(5-6,1)=Max(-1,1)=1
3 Max(8-6,1)=Max(2,1)=1
4 Max(Null-6,1)=Max(Null,1)=Null
그래서 난 그냥 원하는
(Constant1 = 6 Constant2 = 1) 경우는 충분히 명확하지 않을 때 :
1 4
2 1
3 1
4 Null
Null에주의하십시오.
나는 정말로 더 복잡한 것을 원하지만, 나는 내가 원하는 복잡한 것을 풀 수 있다고 생각한다.
그것으로 재개 될 수있다 : 값이 사용 수학 연산자에 대한 유효 값 널인지 아닌지 -return 널 (안에 allways 단지이다 - 또는 + 등) 계산치 -return 그것이 있다면 수학을 할 수는 있지만 범위 (한 값보다 작지 않고 다른 값보다 크지 않음)로 제한됩니다.
이
try // try to do the maths
MyCalculatedValue=SomeMaths(FieldValue);
MyCalculatedValue=Min(Max(MyCalculatedValue,MinValue),MaxValue);
except // In case the SomeMaths can not be done (FieldValue is Null, negative square, division by zero, etc)
MyCalculatedValue=Null;
end;
return MyCalculatedValue;
경우 누군가가 데이터베이스 정규화 아니라고 그냥에서 : 나는 필드에 약간의 수학을하고 싶은, 결과의 제한 내가 의사 코드에 그것을 할 경우
는이 같은 것 범위; 그래서 가장 작은 샘플 데이터베이스는 두 개의 필드 (고유 키 필드, 데이터 필드)만을 가지며 완전히 정규화되지 않는 것이 가능한 하나의 테이블을 가질 것입니다. 나는 행의 일부 필드의 maximun에 대해, 최대 필드 (집계 함수)에 대한 전체 테이블에 대한 maximun 얘기가 아니라 단지 계산 된 값에 상한 및 하한을 넣고 싶지만 Null을 고려하면 그 값 Null이거나 그러한 값을 수행 할 수없는 수학이 수행 될 수 없습니다 (Constant1/(FieldValue-Constant2) 등의 경우). 단지의 경우 누군가에
실제 샘플이 이용 될 수있을 때하지 않습니다
테이블 필드 : 쿼리에 대한
ID (Key)
SpacePosition (DecimalData)
원하는 결과 필드 :
ID as ID
Min(Max(SpacePosition-SomeSpaceLongitud,StartPosition),EndPosition) AS RangeStart
Min(Max(SpacePosition+SomeSpaceLongitud,StartPosition),EndPosition) AS RangeEnd
희망 샘플입니다 누군가 VBA 기능을 사용하는 것보다 더 쉽게 뭔가를 도울 수 있기를 바랍니다.
PD : 이러한 수학은 + 및 -보다 복잡하며 테이블에는 많은 레지스터가 있으며, 수십억 레지스터에 가까운 것보다 많은 레지스터가 있다고 생각하십시오. P.P.D : 정규화 된 데이터베이스가없고 최악의 경우 그러한 쿼리 결과를 하드 코드하는 옵션이 아닙니다. 이러한 범위 제한은 쿼리를 실행할 때 사용자가 입력 한 값입니다.
이 테이블을 정규화 했습니까? (http://www.r937.com/relational.html)? – Fionnuala
정규화 질문에 대한 대답이 무엇인지 꽤 확신 할 수 있다고 생각합니다! –