2016-09-26 8 views
0

그래서 다른 열 값을 기반으로 쿼리 열 값을 출력해야합니다. 이를 위해 cfloop을 사용하여 쿼리 열의 각 값을 확인한 다음 값을 설정했습니다.ColdFusion 쿼리 출력?

<cfloop query="myQuery"> 
    <cfif status EQ "ABC" OR status EQ "DEF"> 
     <cfif trim(exitStatus) EQ ''> 
      <cfset col8val = #col8val#> 
     <cfelse> 
      <cfset col8val = #col8val# A> 
     </cfif> 
    </cfif> 
</cfloop> 

그래서 나는 내가 루프를하지 않아도 그런 식으로 한 곳에서 내 결과를 저장하는 데 사용할해야하는지 궁금하네요, 난 그냥 내 결과이 CFLOOP 후 설정 덤프 간단합니다 : 내 코드는 다음과 같습니다 위. 결과를 얻으려면 둘 다 추가 루핑을해야하므로 배열이나 구조체를 사용할 수 없습니다. 또한 SQL에서이 작업을 시도했지만 두 개의 다른 열에서 두 개의 CASE 문을 결합 할 수 없었습니다. 누구든지이 문제를 도울 수 있으면 알려주십시오.

+4

'상황 선택 = 'ABC'또는 상태 = 'DEF'AND (exitStatus = ''OR exitStatus IS NULL) 다음 col8val ELSE col8val + 'A'' SQL에서 작동해야합니다. 쿼리 자체를 업데이트하는 또 다른 옵션입니다. http://www.bennadel.com/blog/1708-ask-ben-updating-columns-in-an-existing-coldfusion-query-object.htm. 나는 루프 톤을 쓰기 전에 어느 쪽인지 살펴볼 것이다. – Leeish

+1

사례 구성을 파악한 후에는 각 방법을 수행하십시오. 데이터베이스를 사용하여 논리를 적용하면 루프가 필요하지 않으므로 더 효율적이라는 보장은 없습니다. –

+1

@Leeish 왜 대답하지 않는 것이 좋을까요? 거의 답이되는 질문에 대해 많은 의견을 볼 수 있습니다. –

답변

2

두 개의 다른 열에서 case 문을 수행 할 수 있지만 어쩌면 단지 방법을 모르실 수 있습니다. 나는 당신이 사용하고있는 SQL의 맛을 어떻게 조사했는지 더 깊이 연구 할 것입니다. SQL 서버에서 당신이 뭔가를 할 수 있습니다 :

SELECT CASE WHEN status IN ('ABC', 'DEF') AND COALESCE(exitStatus,'') = ''THEN col8val 
      ELSE col8val + 'A' 
     END AS TheNewValue 
FROM TableName 
WHERE .... 

또 다른 옵션이 실제로 쿼리 개체를 편집하는 것입니다 벤에 의해이 게시물이 수행하는 방법에 대해 설명 : Ask Ben: Updating Columns In An Existing ColdFusion Query Object을. 그러나

정확한 질문 :

그래서 내가 한 곳 내가 루프를하지 않아도 그런 식으로 내 결과를 저장하는 데 사용할해야하는지 궁금하네요, 난 그냥 내 결과를 덤프 간단합니다 위의 cfloop 이후에 설정하십시오. 둘 다 결과를 얻기 위해 추가 루핑이 필요하기 때문에 배열이나 구조체를 사용할 수 없습니다.

귀하의 질문을 완전히 이해하지 못했습니다. "한 곳에서 결과 저장"을 원하지만 배열이나 구조를 사용하고 싶지는 않습니다. 배열이나 구조체를 사용할 수 없다면 어떻게 원시적 인 데이터를 저장할 수 있다고 생각합니까? 또한 데이터를 어떻게 사용할 것인지 명확하지 않습니다. 쿼리를 배열이나 구조체 또는 목록 등으로 효율적으로 변환 할 수있는 몇 가지 함수가 있습니다.하지만 데이터를 확인하고 변경해야하는 경우 루프를 작성하고 다른 사람의 함수를 사용하는 것이 유일한 옵션입니다 데이터를 변경하거나 SQL을 변경하는 데 필요한 점검을 수행하도록 수정하십시오. QoQ로 창의력을 발휘할 수는 있지만 솔직히, 원래의 쿼리에서 그렇게 할 수 있습니다.