라이센스 번호 목록이있는 테이블이 있습니다. 라이센스 번호가 할당되고 ID
, 그리고는 ID
같은 수의 (일부 등을 만료 또는 다른 종류)의 여러 개의 라이센스를 가질 수 있습니다.
일부 라이선스 번호는 번호 앞에 'B'가 있습니다. 'B'를 제거하면 몇 개의 라이선스 번호가 다른 ID로 복제되는지 알고 싶습니다.
지금까지 B를 제거하고 카운트를 얻었지만 이제는 더 나아가 ID간에 복제되는 항목 만 쿼리해야합니다.
SQL
SELECT
COUNT(*), TININDIV_IS_NUMBER as ID,
CASE
WHEN SUBSTR (LICENSE_NO, 1, 1) <> 'B'
THEN LICENSE_NO
ELSE SUBSTR(LICENSE_NO, 2, LENGTH(LICENSE_NO))
END AS LICENCSE_NO
FROM BF_CERTIFICATE
GROUP BY TININDIV_IS_NUMBER, LICENSE_NO
얼마나 많은 라이선스 번호가 다른 ID에 복제되는지 알고 싶습니다.
라이센스 번호 목록은 다음과 같이 얻을 수 있습니다.
SELECT (CASE WHEN SUBSTR (LICENSE_NO, 1, 1) <> 'B'
THEN LICENSE_NO
ELSE SUBSTR(LICENSE_NO, 2, LENGTH(LICENSE_NO))
END) AS LICENCSE_NO,
COUNT(DISTINCT TININDIV_IS_NUMBER)
FROM BF_CERTIFICATE
GROUP BY (CASE WHEN SUBSTR (LICENSE_NO, 1, 1) <> 'B'
THEN LICENSE_NO
ELSE SUBSTR(LICENSE_NO, 2, LENGTH(LICENSE_NO))
END)
HAVING COUNT(DISTINCT TININDIV_IS_NUMBER) >= 2;
참고 : Oracle은 절 에서 열 별칭을 인식하지 않으므로 CASE
에서 표현식을 반복해야합니다 .GROUP BY
GROUP BY
실제 개수를 원하면 위의 내용을 하위 쿼리로 사용 count(*)
하고 외부 쿼리 에 a 를 넣으십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다