string data type
을 포함하는 ProjectNum column
이 있습니다. 일반적으로 숫자는 X1234...
이지만 할당 된 번호가없는 경우 자동 생성되어야하며 프로젝트에 할당 된 우선 순위에 따라 C or F
으로 시작하는지 여부에 따라 달라집니다. 따라서 자동 생성 된 숫자는 C or F
으로 시작해야하며 6 자리가오고 자동 증가합니다. 그래서 여기이 날 마지막 자동 증가 수를 잡기 위해 다음 내가 @priorityDefID of 4
에 보낼 때 문제는, 1.을 추가하여 코드 번호를 자동 생성 (수 있습니다이 쿼리에 어떤 문제가 있으며 더 효율적으로 만들 수 있습니까?
SELECT MAX(CINT(RIGHT(ProjectNum, 6))) AS LastDigits
FROM project_master_query
WHERE ((ProjectNum LIKE (IIF([@priorityDefID] = 4, "C*", "F*"))));
내 쿼리입니다 ... 데이터베이스에 "C"로 시작하는 항목이없는 경우) "This expression is typed incorrectly, or it is too complex to be evaluated.
오류가 나타납니다. 예를 들어 숫자 식에 너무 많은 복잡한 요소가 포함되어있을 수 있습니다. "
내가 왜 4를 넘기는 지 잘 모르지만, 1, 2 또는 3은 올바르게 작동하고 올바른 값을 반환합니다. 대신 생각해 보았습니다. MAX
을 작성하고 C 또는 F로 시작하여 오른쪽 6 자리를 가져온 다음 상단 1을 내림차순으로 잡아서 순서대로 정렬 하시겠습니까?
이렇게 보이는 쿼리를 사용하지 않아도됩니다. 나는 ProjectNum 내부에 이러한 종류의 쿼리/함수가 필요한 로직을 포함시키는 것이 현명하다고 생각하지 않습니다. 프로젝트의 우선 순위가 변경되면 ProjectNum을 변경합니까? ProjectNum에 대해 증가하는 숫자를 사용하고 우선 순위 열을 사용하십시오. – HK1
'project_master_query'는 테이블 대신 쿼리가 될 것 같습니다. 그렇다면'ProjectNum'은 어떻게 쿼리의 소스 테이블에 저장됩니까? @ HK1이 언급했듯이, 한 필드에서 두 개의 사실 (* 우선 순위와 시퀀스 번호)을 결합하는 것이 최고의 디자인이 아니므로이 쿼리는 더욱 어려워집니다. 테이블 디자인을 "하나의 필드, 하나의 사실"로 변경할 수 있는지 고려하십시오. 당신이 그들을 결합해야 볼 때마다, 쿼리 표현을 사용하십시오 :'SELECT priority & sequence_number AS ProjectNum' – HansUp
@ HK1 그건 좋은 지적이지만, 불행히도 나는 규칙을 만들지 않습니다. 그러나 그들이 이러한 것들을 설정하는 방법을 판단하면 그들은 변하지 않을 것입니다. 우선 순위 1, 2 및 3은 F 유형 프로젝트이고 4는 완전히 다른 유형의 프로젝트이고 나는 변할 것이라고 믿지 않습니다. –