'이름 %'이 (가)있는 SQL안녕하세요,
나는 열린 데이터베이스 내에서 SQL 쿼리를 가지고 'FAIL %'와 같은 것을 검색한다. 나는 FAIL ***이라는 이름을 찾고 싶다. 어떻게 그걸 성취합니까? 현재 FAIL % 만 선택하고 있습니다.
dt3 = Open Database(
"DSN=" || one_product || ";UID=**;PWD=***;",
"select count(distinct BoardNo) from " || station || " where boardno in (select BoardNo from (select BoardNo,result,starttime from " ||
station || " where BoardNo in (select BoardNo from (select BoardNo,result,count(result) as test from " || station ||
" where result like 'FAIL%' group by BoardNo having test >1 order by starttime desc)as comm) order by BoardNo,starttime desc) as t where result like 'PASS' group by BoardNo)and date(starttime) between '"
|| dateb || "' and '" || datee || "'",
"ABC"
);
이름 역과 날짜 및 날짜가 생성되었습니다. 당신의 도움을 주셔서 감사합니다.
다시 : '이름 %'와 SQL제안 해줘서 고마워.
다시 : '이름 %'와 SQL이것을 접근하는 다른 방법이 있습니다.
FROM 절은 여러 테이블을 허용합니다. 예를 들어,
FR1 t1, t2, t3 어디 t1.something = t2.something 및 t1.something = t3.something.
이 테이블은 테이블 일 필요는 없으며 쿼리 일 수도 있고 같은 테이블의 쿼리 일 수도 있습니다 (예 : 반사 조인). 예를 들어, FROM 절에서 다음과 같이 할 수 있습니다.
SELECT d1. , d2. 등
에서
(선택 DISTINCT boardno, starttime, 결과는 어디에서 역 결과 '% 실패'와 같은 날짜 ( 시작 시간 ) '2013 년 1 월 31 일'과 '12 / 31 / 2015 '
GROUP BY 보드 노 산정 (*)> 1) AS d1 / * 실패한 테이블 * / ,
(SELECT DISTINCT 보드 노, starttime, result FROM 역
날짜 ( 시작 시간 ) '1/31/2015'와 '12 / 31 / 2015 '및 결과 LIKE '% PASS %') AS d2 / * 패스 테이블 * /
어디 d1. <뭔가> = d2. <뭔가> 등
GROUP BY는 여기의 operative 절입니다. - 선택 사항은 요약 통계를 기반으로합니다. -이 경우, 마지막 WHERE 절 다음에 ORDER BY가 필요합니다. case count (). 또한 쿼리에서 starttime은 모호합니다. 더 명확하게 명시 상태에 그것과 어디에서오고있어 - 그래서 내 예를 들어, 나는 두 테이블에서 가져올거야. 나는 행 수를 반환하는 COUNT (*)를 사용했다. http://documentation.sas.com/?docsetId=sqlproc&docsetTarget=n123fsko39j44pn16zlt087e1m2h.htm&docsetVersion=9.4&locale=en )
다시 : '이름 %'와 SQL감사.
다시 : '이름 %'와 SQL나는 계산 된 링크를 잘못 잡았다. - 시도해 보라. http://documentation.sas.com/?docsetId=sqlproc&docsetTarget=n0jxri3yohqdwbn1slekmsc882gz.htm&docsetVersion=9.4&locale=en 다시 : '이름 %'와 SQL몇 가지 다른 asides.
결과 입력란에 표준 답변이 없으므로 'FAIL %'처럼 보입니다. 따라서 '% FAIL %'에 대해 테스트하거나 BTRIM ()과 함께 사용하는 것이 좋습니다. 또한 대문자인지 확인하기 위해 필드를 UPPER ()로 설정할 수도 있습니다 (JMP 함수를 확인하지 않은 채 확인하십시오). 그리고 나는 PASS에 대한 관찰을 두 번째로합니다 - 당신은 '% PASS %'또는 비슷한 것을 원할 것입니다.
또 다른 관찰 - HAVING test> 1을 HAVING CALCULATED test> 1로 대체해야 할 수도 있습니다 ( " http://documentation.sas.com/?docsetId=sqlproc&docsetTarget=n12wnf0zqw2frvn1bghzrncuh89m.htm&docsetVersion=9.4&locale=en ").
다시 : '이름 %'와 SQL나는 읽기가 어려웠으므로 쿼리를 다시 포맷해야했습니다. 가짜 이름과 날짜 값을 대체하고 내부 쿼리에 별칭을 추가했습니다.
SELECT COUNT(DISTINCT d3.BOARDNO)
FROM DB.STATION d3
WHERE d3.BOARDNO IN
(SELECT t.BOARDNO
FROM (SELECT d2.BOARDNO, d2.RESULT, d2.STARTTIME
FROM DB.STATION d2
WHERE d2.BOARDNO IN
(SELECT comm.BOARDNO
FROM (SELECT d1.BOARDNO, d1.RESULT, COUNT(d1.RESULT) AS TEST
FROM DB.STATION d1
WHERE d1.RESULT LIKE 'FAIL%'
GROUP BY d1.BOARDNO
HAVING TEST > 1
ORDER BY d1.STARTTIME DESC) AS COMM)
ORDER BY d2.BOARDNO, d2.STARTTIME DESC) AS T
WHERE RESULT LIKE 'PASS'
GROUP BY t.BOARDNO)
AND DATE(d3.STARTTIME) BETWEEN '1/31/2015' AND '12/31/2015'
빈스가 말했듯이 LIKE 'FAIL %' 작동해야합니다. 나는 네가 또한 말하고 있다는 것을 알아 차린다. LIKE 'PASS' . 와일드 카드가 필요하지 않은 경우 = '합격' 똑같이 작동합니다.
나는 당신의 로그에 SQL 문을 출력하고 데이터베이스에 직접 내부 쿼리를 실행하여 시작한다. Oracle을 사용하는 경우 PL / SQL Developer 또는 Toad와 같은 도구를 사용할 수 있습니다. 또한 각 하위 쿼리에 별칭을 넣어 스테이션 데이터베이스 테이블을 구별 할 수 있습니다.
다시 : '이름 %'와 SQL그게 효과가있다. 나는 항상 그렇게한다. DB를 보지 않고서는 무엇이 잘못되었는지 말할 수 없습니다.
최종 문자열을 가져 와서 SQL에서 실행하여 출력 결과를 확인해 보았습니까?