2014-12-15 4 views
1

소스 테이블/쿼리에 데이터가 없으면 크로스 탭 쿼리에 더미 행 머리글을 추가 할 수 있습니까? 어떤 카테고리가 현재 해당 카테고리에 속하지는 않더라도 카테고리가 존재한다는 것을 알고 있음을 나타냅니다. 액세스의 크로스 탭 쿼리에 더미 행을 추가 할 수 있습니까?

은 ...

| Category | Total | Class 1 | Class 2 | Class 3 | Class 4 | 
| PARTK1120 | 0.00 | 0.00 | 0.00  | 0.00 | 0.00  | *New* 
| PARTK2130 | 0.10 | 0.00 | 0.00  | 0.10 | 0.00  | 
| PARTK3140 | 0.29 | 0.01 | 0.24  | 0.04 | 0.00  | 
| PARTK4150 | 30.98 | 0.33 | 12.22  | 18.44 | 0.00  | 
| PARTK5160 | 0.00 | 0.00 | 0.00  | 0.00 | 0.00  | *New* 
| PARTK6170 | 0.00 | 0.00 | 0.00  | 0.00 | 0.00  | *New* 
| PARTK7180 | 0.00 | 0.00 | 0.00  | 0.00 | 0.00  | *New* 

을 ...이 출력을하고 싶습니다,

| Category | Total | Class 1 | Class 2 | Class 3 | Class 4 | 
| PARTK2130 | 0.10 | 0.00 | 0.00  | 0.10 | 0.00  | 
| PARTK3140 | 0.29 | 0.01 | 0.24  | 0.04 | 0.00  | 
| PARTK4150 | 30.98 | 0.33 | 12.22  | 18.44 | 0.00  | 

을 설명 그리고 그것은합니다 (* 새로운 * 행 통지)과 같이 만들려면 이 방법을 생각해 볼 수있는 유일한 방법은 새 더미 원본 테이블/쿼리를 만들고 일부 더미 레코드로 채운 다음 원본과 함께 더미 소스를 보는 UNION 쿼리로 크로스 탭 쿼리를 수정하는 것입니다. 나는 일할 수있게되었지만 이것은 마치 원숭이 사업처럼 보인다.

실제로 데이터가 없을 때 여분의 열을 추가하는 방법을 배웠으므로 (클래스 4 열과 this post 참조) 추가 행을 추가하는 트릭이 있다고 생각합니다. 어쨌든 바래요.

다음은 SQL의 :

TRANSFORM Format(Nz(Sum(qryPartK.MILES_OF_PHYS_LENGTH),0),"Fixed") 
AS SumOfMILES_OF_PHYS_LENGTH 
SELECT IIf([PCT_SMYS]<=30,"PARTK2130", 
IIf([PCT_SMYS]<=40,"PARTK3140", IIf([PCT_SMYS]<=50,"PARTK4150", 
IIf([PCT_SMYS]<=60,"PARTK5160",IIf([PCT_SMYS]<=72,"PARTK6170", 
IIf([PCT_SMYS]>72 And [PCT_SMYS]>=80,"PARTK7180", 
IIf([PCT_SMYS]>80,"PARTK80MORE"))))))) AS Category, 
Sum(qryPartK.MILES_OF_PHYS_LENGTH) AS Total 
FROM qryPartK 
GROUP BY IIf([PCT_SMYS]<=30,"PARTK2130", 
IIf([PCT_SMYS]<=40,"PARTK3140",IIf([PCT_SMYS]<=50,"PARTK4150", 
IIf([PCT_SMYS]<=60,"PARTK5160",IIf([PCT_SMYS]<=72,"PARTK6170", 
IIf([PCT_SMYS]>72 And [PCT_SMYS]>=80,"PARTK7180", 
IIf([PCT_SMYS]>80,"PARTK80MORE"))))))) 
PIVOT qryPartK.CLASS_LOC_text In ("Class 1","Class 2","Class 3","Class 4"); 
+0

당신이 범주 테이블이 있나요 표시하려는 고유 한 카테고리? 그렇다면 '외부 조인'을 사용하십시오. – sgeddes

+0

아니요, 아닙니다. 내가 그랬다면, 어떻게하면 문제를 해결할 수 있을지 설명해 주시겠습니까? –

답변

0

UNION은 데이터를 구별했다. 범주가 구분되어 결과에 표시됩니다. 값이있는 행만 반환하는 경우 Where Total <> 0을 추가해야합니다.

편집

TRANSFORM Format(Nz(Sum(qryPartK.MILES_OF_PHYS_LENGTH),0),"Fixed") 
AS SumOfMILES_OF_PHYS_LENGTH 
SELECT IIf([PCT_SMYS]<=30,"PARTK2130", 
IIf([PCT_SMYS]<=40,"PARTK3140", IIf([PCT_SMYS]<=50,"PARTK4150", 
IIf([PCT_SMYS]<=60,"PARTK5160",IIf([PCT_SMYS]<=72,"PARTK6170", 
IIf([PCT_SMYS]>72 And [PCT_SMYS]>=80,"PARTK7180", 
IIf([PCT_SMYS]>80,"PARTK80MORE"))))))) AS Category, 
Sum(qryPartK.MILES_OF_PHYS_LENGTH) AS Total 
FROM qryPartK 

WHERE Sum(qryPartK.MILES_OF_PHYS_LENGTH)<>0 

GROUP BY IIf([PCT_SMYS]<=30,"PARTK2130", 
IIf([PCT_SMYS]<=40,"PARTK3140",IIf([PCT_SMYS]<=50,"PARTK4150", 
IIf([PCT_SMYS]<=60,"PARTK5160",IIf([PCT_SMYS]<=72,"PARTK6170", 
IIf([PCT_SMYS]>72 And [PCT_SMYS]>=80,"PARTK7180", 
IIf([PCT_SMYS]>80,"PARTK80MORE"))))))) 
PIVOT qryPartK.CLASS_LOC_text In ("Class 1","Class 2","Class 3","Class 4"); 

봅니다 WHERE 추가 할 수 있습니다.

+0

또는 합계가 모든 클래스의 합계가 아닌 경우'Where Total <> 0 및 [Class 1] <> 0' 등을 추가해야합니다. – Liniel

+0

완전히 따르지는 않지만 현재 UNION을 사용하고 있지 않습니다. 질문. 사실, 나는 그것을 피하기를 바라고 있습니다. –

+0

쿼리를 작성해 주시면 도움이 될 것입니다. – Liniel

1

를 사용하여 하위 쿼리가있는 outer join :

select c.category, r.total, r.class1, r.class2, r.class3, r.class4 
from (select 'PARTK1120' category 
     union all select 'PARTK2130' 
     union all select 'PARTK3140' 
     union all select 'PARTK4150' 
     union all select 'PARTK5160' 
     union all select 'PARTK6170' 
     union all select 'PARTK7180') c 
left join yourresults r on c.category = r.category 

당신은 0null 값을 설정하는 coalesce을 사용할 수 coalesce(r.total, 0) total

+0

나는 이것에 흥미가 있지만 코드가 Access SQL 언어와 호환되지 않는 것 같습니다. 그것을 적응시키는 방법이 있다면, 나는 어떻게 배우는가에 흥미가있을 것입니다. –