쿼리 빌더 - 고유 레코드<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요 ,
내 문제를 해결하기 위해 꽤 많은 개인적인 노력을 기울인 후 사용자와 JMP 커뮤니티에 질문으로 게시하기로 결정했습니다.
p1, p2, 자산 및 시간을 가져오는 데이터베이스가 있습니다. 데이터베이스는 p1, p2 매개변수를 의미하는 누적 데이터베이스로서 각각의 마지막 상태를 나타내는 것으로 로드됩니다. 유산 특정에서 시간 . 즉, p1 및 p2의 이전 이전 인스턴스는 유효하지 않으며 p1 및 p2의 최신 버전은 주어진 작업에 필요합니다. 유산 최근 보고된 시간 .
따라서 필요한 것은 내림차순입니다. 시간 그런 다음 결과가 고유하도록 강제합니다. 유산 수준.
쿼리 작성기에서 이것을 지시하는 방법에 대한 아이디어가 있습니까?
오히려 사용자 정의 SQL을 사용하지 않는 솔루션을 선호합니다 .... 실제로 Custom SQL에 솔루션이 있지만 Custom SQL에서 수행하기 어려운 몇 가지 조각을 더 추가할 것이므로 쿼리 빌더 내에서 이 작업을 수행하는 방법을 배우고 싶습니다.
도움을 주셔서 감사합니다.
알투그 바이람
Re: 쿼리 빌더 - 고유 레코드이것은 오래된 게시물이지만 다음과 같습니다.
@altug_bayram 쓴 :
나는 추가하는 것을 잊었다 ...
원래 귀하의 쿼리를 작동시키지 못한 이유는 올바른 방식으로 데이터베이스를 참조하지 않았기 때문입니다. 우리가 그렇게 하고 나니 효과가 있었다
올바른 방법은 무엇입니까? 또한 "오류: 관계 "databases_enzyme_db"가 존재하지 않습니다. 매개 변수 [SQLSTATE=42P01]를 준비하는 동안 오류가 발생했습니다."라는 오류가 표시되며 문제를 해결하는 방법을 잘 모르겠습니다.
Re: 쿼리 빌더 - 고유 레코드천만에요.이 스레드는 하위 쿼리에 대한 나의 이해를 정말로 밀어붙였습니다.나는 많이 배웠다.
잘 지내세요,
에릭
Re: 쿼리 빌더 - 고유 레코드에릭,
이제 더 잘 이해하고 동의합니다. 다시 한 번 이 문제를 해결하기 위해 노력해 주셔서 감사합니다.
당신의 도움은 매우 소중했습니다.
Re: 쿼리 빌더 - 고유 레코드시간만 있는 원래 버전을 실행하고 X에서 MAX 집계를 사용하면 올바른 행을 반환할 수 있지만 해당 행에 대한 p1 및 p2 값을 찾을 수 없습니다.p1과 p2를 쿼리에 남겨두고 말한 대로 하면 p1과 p2가 쿼리에 대한 GROUP BY가 되기 때문에 중복 최대 시간이 있는 모든 행을 얻습니다.

이제 쿼리에서 p1 및 p2를 제거하면 쿼리가 올바른 행을 반환합니다.

그러나 요점은 해당 행에 대한 p1 및 p2의 값을 찾는 것이었고 그들은 사라졌습니다.따라서 이중 하위 쿼리 접근 방식이 질문에 답하는 유일한 접근 방식이라고 생각합니다.
에릭
Re: 쿼리 빌더 - 고유 레코드에릭,
그것은 매력처럼 작동했습니다 ...
그래도 궁금합니다 ... "Included Columns"필드 내에서 X 집계를 "최대"로 선택하는 동안 사용자 정의 epxression의 첫 번째 원본 버전 (시간 만 포함)을 실행하여 작동했을까요 ...?
정말 고마워 ....
Re: 쿼리 빌더 - 고유 레코드DISTINCT는 여기에 별도의 행이 없기 때문에 OP에 도움이 되지 않습니다.
두 번째 경우를 해결할 쿼리를 찾았습니다.하단에 각 자산의 최대 시간을 복제하는 6개의 행을 추가하고 X 변수를 추가했습니다.다음은 표입니다.

그리고 작동하는 쿼리는 다음과 같습니다(하위 쿼리 하나와 하위 쿼리 내에 하나의 하위 쿼리가 필요함).

사용자 정의 표현식은 다음과 같습니다.
t1.Time = (SELECT MAX(tInner.Time) 부품 tInner WHERE t1.Asset = tInner.Asset)
그리고
t1.X = (SELECT MAX(tInner.X) 부품 tInner WHERE t1.Asset = tInner.Asset AND
tInner.Time = (tInner.Asset = tInner2.Asset인 부품 tInner2에서 MAX(tInner2.Time) 선택)
읽기 쉽도록 모든 SQL 키워드를 대문자로 표시했습니다.몇 가지 더 간단한 쿼리를 시도했지만 작동하지 않았습니다.
HTH,
에릭
Re: 쿼리 빌더 - 고유 레코드중복 항목인 경우 DISTINCT 키워드를 사용하면 도움이 될 것입니다.
Re: 쿼리 빌더 - 고유 레코드나는 추가하는 것을 잊었다 ...
원래 귀하의 쿼리를 작동시키지 못한 이유는 올바른 방식으로 데이터베이스를 참조하지 않았기 때문입니다. 우리가 그렇게 하고 나니 효과가 있었다
Re: 쿼리 빌더 - 고유 레코드에릭,
정말 감사합니다 ....
죄송합니다. GE의 다른 전문가에게 문의하여 알아내는 데 시간이 좀 걸렸습니다.
귀하의 솔루션 (첫 번째 솔루션)은 확실히 작동했습니다 !!! 두번째는 아직 안써봤습니다.
문제가 하나 더 있습니다 -
데이터베이스를 채우는 사람들이 동일한 마지막 시간에 몇 개의 자산에 대해 중복 항목을 삽입한 것으로 나타났습니다. 이를 해결하기 위해 say X 라는 제목의 다른 열이 있습니다. 수동으로 가장 큰 X가 있는 두 개를 선택합니다. Max(Time)에서 Max(X)로 변환하고 싶지 않았습니다. X 자체는 그다지 신뢰할 수 없지만 중복 Time 항목에 대한 선택 요소가 되기 때문입니다.
원래 사용자 정의 표현식을 일종의 두 번째 MAX(X에서)를 포함하도록 변환하려고 시도했지만 작동하지 않았습니다...
따라서 .. 시간이 MAX인 각 자산을 가져오려고 시도하고 여러 항목이 Max(X)가 있는 항목을 선택하는 경우
모든 제안
Re: 쿼리 빌더 - 고유 레코드내 원래 예는 SQL Server에 대한 것인데 조금 더 관대합니다.Oracle의 경우 하위 쿼리의 테이블 이름을 schema.table 형식으로 지정해야 했고 대소문자가 혼합된 이름을 인용해야 했습니다.
t1."시간" = (에서 MAX(t2."시간") 선택 SQBTEST. "부품" t2 여기서 t2."자산" = t1."자산")
변경해 보세요 my_table 첫 번째 시도에서 <스키마>.my_table 도움이 되는지 확인하세요.
에릭
Re: 쿼리 빌더 - 고유 레코드이봐, 알투그,
어떤 데이터베이스를 사용하고 있습니까?
찾고 있는 결과를 제공하는 사용자 지정 SQL 쿼리의 SQL을 기꺼이 공유하시겠습니까?
감사해요,
에릭
Re: 쿼리 빌더 - 고유 레코드안녕 에릭,
먼저 도움을 주셔서 감사합니다 ....
당신의 이해가 맞습니다. Time이 최대(또는 가장 최근)인 각 자산에 대해 단일 행을 가져오려고 합니다.
나는 당신의 공식을 적용했습니다. 그러나 오류가 발생합니다.
먼저 실제 테이블 이름으로 적용한 다음 "t1"으로 적용했습니다.
t1.calendar_month = (t1.engine_serial_num = t2.engine_serial_num인 my_table t2에서 MAX(calendar_month) 선택)
t1.calendar_month = (t1.engine_serial_num = t2.engine_serial_num인 t1 t2에서 MAX(calendar_month) 선택)
오류: "my_table" 관계가 없습니다.
쿼리 실행 중 ERROR [ SQLSTATE: 42P01 ]
Re: 쿼리 빌더 - 고유 레코드이봐, 알투그,
다음은 귀하가 설명하는 것과 유사하다고 생각되는 테이블입니다(단, JMP가 아닌 데이터베이스에 있다고 가정).

내 이해는 시간이 최대 인 A1, A2, A3 및 A4에 대해 하나의 행을 검색하고 싶다는 것입니다.그 맞습니까?
Custom Expression 필터를 사용하여 수행할 수 있는 MAX 함수를 사용하는 하위 쿼리를 수행하지 않고는 이것이 가능하지 않다고 생각합니다.내가 끝낸 쿼리는 다음과 같습니다.

너무 작아서 읽을 수 없는 경우 사용자 정의 표현식은 다음과 같습니다.
t1.Time = (t1.Asset = t2.Asset인 부품 t2에서 MAX(Time) 선택)
따라서 기본 쿼리(t1.Asset)에서 자산 값을 전달하고 해당 자산에 대한 최대 시간 값이 있는 행을 선택합니다.
도움이 된다면 알려주세요.
에릭
Re: 쿼리 빌더 - 고유 레코드청구서
빠른 답장을 보내 주셔서 감사합니다.
그러나 여기서 중요한 것을 놓치고 있지 않는 한 이것은 내 문제를 해결하지 못합니다.
1) 모든 자산의 마지막 유효 지점은 일반적으로 동일한 시점이 아니며 상당히 다릅니다. 몇 년의 차이가 있을 수 있습니다.
2) 나는 가능한 한 즉각적인 해결책을 찾고 있지 않다. 완전히 자동화하려면 이것이 필요합니다.
3) >=를 사용한 "Filter By"가 어떻게 고유하게 만들 수 있는지 잘 모르겠습니다. 오히려 "="로 필터링하려는 것 같습니다.
따라서 시간 필터를 지정하지 않고도 모든 자산에 대한 최신 시간순 항목을 선택하는 접근 방식이 필요합니다(최신 데이터는 시간의 어느 곳에나 있을 수 있기 때문).
감사해요.
Re: 쿼리 빌더 - 고유 레코드안녕 알투그,
시간의 내림차순을 얻으려면 아래 이미지를 참조하십시오.
Available Columns에서 시간 변수를 마우스 오른쪽 버튼으로 클릭하고 "Order By"를 선택하면 오른쪽 하단에 새 대화 상자가 나타납니다.여기에서 내림차순 화살표를 선택하여 원하는 시간 순서를 얻을 수 있습니다.
그런 다음 프롬프트가 있는 필터를 사용하여 고유한 자산 수준을 선택할 수 있습니다.
