2012-07-04 2 views
4

AX 2009에서 문제가 발생했으며 기본적으로 우둔하다는 것을 인정해야합니다.AX 축의 피벗 테이블

내가보기 구축하고자하는

(AN AOT 쿼리 여부에 기반을,하지만 난 당신이 볼 수있는 것보다 엄격하게 AOT 쿼리를 사용하여 더 많은 작업을 수행 할 수 있습니다 이해하는 것과)이 보이는 테이블 사용 :

id status date 
1  IN  10/10/2011 
1  OUT  11/10/2011 
2  OUT  12/10/2011 
3  IN  13/10/2011 
4  IN  14/10/2011 
4  OUT  15/10/2011 

뷰 이상적 같을 것이다 :

id IN_Date  OUT_Date 
1 10/10/2011 11/10/2011 
2 *NULL*  12/10/2011 
3 13/10/2011 *NULL* 
4 14/10/2011 15/10/2011 

엄격한 SQL에서, 심지어는 할 수있는 간단한 작업입니다 만 있기 때문에 내가 AX 2009 년에 그것을 할 수있는 방법을 찾을 수 없습니다 Microsoft Access를 사용하여 보기 필드에 "AS"옵션이 없습니다. AX 외부에서보기를 액세스하기 때문에 표시 방법을 사용하고 싶지 않습니다. 어떤 힌트라도 대단히 감사하겠습니다!

+0

피벗 테이블과 관련이 있습니까? –

+0

줄이 열이되고 줄이 (어쨌든) 줄이되므로 피벗 테이블이 탁월하다는 것을 상기 시켰습니다. – Max

답변

3

테이블에 full outer join (자체와 결합)을하고 싶습니다.

X ++ 또는 쿼리에서는 지원되지 않지만 외부 조인이 공용체와 결합 된 두 개의 중간 뷰를 사용하여 시뮬레이션 할 수 있습니다.

보기 1 :

select id, date as dateIn from table as table1 
    outer join date as dateOut from table as table2 
    where table2.id == table1.id and 
      table1.status == Status::In and 
      table2.status == Status::Out 

보기 2 :

select id, date as dateOut from table as table1 
    outer join date as dateIn from table as table2 
    where table2.id == table1.id and 
      table1.status == Status::Out and 
      table2.status == Status::In 

보기 3 : 위의

select id, dateIn, dateOut from view1 
union 
select id, dateIn, dateOut from view2 

이 더 많거나 적은 SQL, AX 쿼리로 전환 할 수 있습니다되는 및 조회수.

그 방법은 this answer입니다.

+0

답변 해 주셔서 감사합니다. 그것은 좋은 것이지만 새로운 지위가 추가되고 또 다른 열이 필요할 경우 압도적으로 될 수 있습니다. AOT 쿼리를 사용하여 원하는 것을 할 수있는 방법을 찾았습니다. – Max

+0

어떻게 그랬습니까? 제발 말해줘. 외부 상태를 추가해도보기에 영향을 미치지 않습니다.보기에 영향을 미치기 때문입니다. 더 간단한 해결책은 테이블에 두 개의 날짜를 추가하고 상태를 제거하는 것입니다. 같은 ID의 In 또는 Out이 여러 개 있으면 문제가 없습니다. –

+1

기본 데이터 소스에 범위를 지정하지 않고 쿼리를 만들었습니다. 가능한 각 상태 (예 : 열)에 하위 데이터 소스를 추가했습니다. 각 하위 데이터 소스는 OuterJoin, Firstonly 등 1 : 1 관계를 사용하여 조인되었습니다. 물론 각 하위 데이터 소스는 고유 ID를 사용하여 기본 데이터 소스에 연결되었으며 상태 (각 하위 데이터 소스에 대해 다른 범위)에 범위가있었습니다. 보기에서는 각 하위 데이터 소스의 날짜 필드를 MIN 집계와 함께 사용했습니다. 필자는 다른 경우에도 동일한 상태에 여러 행을 가질 수 있기 때문에 그렇게했습니다. (가장 오래된 날짜를 원합니다.) – Max