2012-09-14 4 views
0

내가</li> </ol> <p>테이블의 구조를 노화 <ol> <li>트레일 균형</li> <li>을 두 테이블</p>를 사용하여 결과 집합을 얻기 위해 노력하고

있습니다 노화

loc | glAcct | Amount 
----------------------------------- 
1013 |  1101  | 200 
----------------------------------- 
1211 |  1102  | 300 
----------------------------------- 
,451,515,

시험 밸런스

loc | g1101 | g1102 
------------------------------ 
1013 |  20  | 30 
------------------------------ 
1211 |  10  | 40 
----------------------------- 

지금 내가 뭘하려고 오전 내가

같은 경우 문을 시도

loc | glAcct | agigingAmount | Trialbalance Amount 
-------------------------------------------------------------- 
1013 |  1101 |  200   |  20 
-------------------------------------------------------------- 
1211 |  1102 |  300   |  40 
-------------------------------------------------------------  

지금 원하는 열 으로 행과 일치하는 것입니다

select ag.loc,ag.glAcct, 
case 
    when ag.glAcct = '1101' then select g1101 from trialbalance 
    when ag.glAcct = '1102' then select gl101 from trialbalance 
end 

from trialbalance tb,Aging ag where ag.loc = tb.loc 

하지만 작동하지 않습니다.

미리 감사드립니다.

답변

1

이를 시도해보십시오 내부 조인에 대한

SELECT ag.loc, 
ag.glAcct, 
ag.Amount AS agigingAmount, 
TrialbalanceAmount= 
CASE ag.glAcct 
    WHEN '1101' THEN tb.g1101 
    WHEN '1102' THEN tb.g1102 
END 
FROM Aging ag,trialbalance tb 
WHERE ag.loc = tb.loc; 

Here is a working example

+0

참고 : 예제는 SQL Server 2008 R2에서 온라인으로 코드 작업을 보여 주기만하면됩니다. – heretolearn

+0

감사합니다. 이것이 내가 필요한 것입니다. –

2

당신은 거의 있었다 :

SELECT ag.loc, ag.glAcct, ag.Amount AS agigingAmount 
CASE ag.glAcct 
    WHEN '1101' THEN tb.g1101 
    WHEN '1102' THEN tb.g1102 
END AS [Trialbalance Amount] 
FROM Aging ag 
INNER JOIN trialbalance tb on ag.loc = tb.loc 
+1

일을. 또한 데이터 레이아웃을 '수정'(정규화)하기 위해 Op에 권장합니다. 그러나 나는 전화를하고 예를 쓰면 세금이 부과 될 것입니다. – MatBailie

+0

@Dems 예, 정상화에 대해 동의했습니다. 그러나 지금도 내 전화에 있습니다. :) –

+0

@Dems 데이터베이스를 만들지 않았으므로 소유. 문제가 생겼을 때도 똑같은 생각이 들었지만 귀중한 의견을 보내 주셔서 감사합니다. 나는 그들이 데이터베이스를 바로 잡도록하길 바란다. –

관련 문제