클라이언트에 설치된 소프트웨어의 버전을 저장하는 테이블이 있습니다. 가장 높은 버전 값을 반환해야합니다. 값이 2.3.0.99와 같은 형식이므로 MAX (versionValue)는 가장 높은 값을 반환하지 않습니다. 가장 높은 값이 2.3.0.122이면 MAX는 2.3.0.99를 가장 높은 값으로 반환하며 이는 사실이 아닙니다. 나는 이것이 꽤 사소한 것이라고 확신한다, 나는 벽을 치고 구글은 지금 도움이되지 않는다. 모든 통찰력은 인정 될 것이다.소수점이있는 최대 값
답변
모두에게 감사드립니다. CLR로 UDF를 작성했습니다. DB는 타사 제품과 연결되어 있으므로 스키마를 재구성하는 것은 선택 사항이 아닙니다.
UDF 또는 사용자 정의 집계? 후자가 더 적합 해 보입니다. –
죄송합니다, 사용자 정의 집합 :) –
데이터베이스 스키마를 변경하고 버전을 가정하는 것은 항상 빌드,
심각, 경미 네 개의 새 열을 추가 할 수와 같은 형식, 개정판
를 다음 수 있다면 이러한 모든 int 치의 당신이 할 수있을 것 다음 중 하나를 사용자 문자열 concatination는 버전 번호 2.3.0.122를 제공하거나, 예를 들어 최대 버전을 얻을 산수를 사용
(* 1000 주요) + (마이너 * 100) +에 (* 10 빌드) + 개정
이슈 만 e를 사용하면 전체 테이블 스캔을 수행하여 가장 높은 것이 무엇인지 알아 내야하며, 사소한 릴리스가 너무 높아서 중요한 릴리스가 필요한 문제가 발생할 수 있습니다.
하지만 확실한 아이디어를 얻으실 수 있습니다.
하나의 열에 4 개의 정보를 저장하고 이제는 구성 요소로 분해해야하기 때문에 문제가 발생했습니다.
이상적으로 테이블을 1NF에 놓아야합니다. 즉,이 값을 4 int
열로 나눕니다 (그리고 나서 복합 인덱스를 그 위에 놓습니다).
표시 목적으로 연결 한 (계산되지 않은) 계산 열이있을 수 있습니다.
이것이 가능하지 않다면 다음은 가능하지 않지만 그 일을합니다.
DECLARE @versions TABLE (
version_number varchar(15),
productid int)
INSERT INTO @versions
SELECT '2.3.0.122',1 UNION ALL
SELECT '2.3.0.99',1 UNION ALL
SELECT '2.3.0.122',2 UNION ALL
SELECT '2.4.0.99',2;
WITH cte
AS (select productid,
version_number,
ROW_NUMBER() over (partition by productid
order by CAST('/' +
version_number + '/' AS hierarchyid) desc) AS RN
FROM @versions)
SELECT productid,
version_number
FROM cte
WHERE RN = 1
- 1. 소수점이있는 iPhone 숫자 패드
- 2. 창 최대 최대 값
- 3. 소수점이있는 MaskedEditExtender 사용
- 4. UISlider 변수 최대 값
- 5. 사전에서 최대 값 할당
- 6. 열의 최대 값 얻기
- 7. ChucK에서 int의 최대 값
- 8. JQuery와 슬라이더의 최대 값
- 9. SQLite3 정수 최대 값
- 10. CUDA에서 최대 값 찾기
- 11. bigint로 표시되는 최대 값
- 12. 최대 절전 모드와 "최대 값 승리"논리
- 13. 최대 절전 값 및 합계 값
- 14. 범위 최소값/최대 값 조회
- 15. Doctrine에서 Groupwise 최대 값 찾기
- 16. t-SQL의 최대 int 값
- 17. SQL 서버의 스칼라 최대 값
- 18. SQL 쿼리 최소값 최대 값
- 19. PHP에서 배열의 중앙값과 최대 값
- 20. XSL에서 그룹당 최대 값 합계
- 21. PHP의 최대 부동 소수점 값
- 22. 얻기 DataBinder 항목의 최대 값
- 23. mysql의 where 절의 최대 값
- 24. 그룹에 대한 SQL 최대 값
- 25. 크롬의 최대 z- 색인 값
- 26. 패널 자동 스크롤 최대 값
- 27. UIProgressView 사용자 지정 최대 값
- 28. 다 대다 관계의 최대 값
- 29. 부동 소수점이있는 소수가 아닌 bignum은 누가 사용합니까?
- 30. PHP 배열의 최소값과 최대 값 얻기
SQL Server는 versionValue를 string으로 처리합니다. GetLatestVersion을 사용하여 마지막 버전을 검색하는 자체 함수를 작성해야합니다. 또는 버전 값을 저장하고 getdate()를 기본값으로 사용하여 날짜순으로 정렬 된 마지막 버전 값을 내림차순으로 선택하는 테이블에 날짜 열을 추가 할 수 있습니다. –