2014-01-14 3 views
0
SELECT distinct t1.vssyspackageid,CA.rAmount as Amount,Curr.vsShortCode AS Currency  


from tblPrograms   
    INNER JOIN tblProgramsAndPackages ON tblPrograms.vsSysProgramId = tblProgramsAndPackages.vsSysProgramId   
    inner join tblPackages t1 on tblProgramsAndPackages.iPackageId=t1.iPackageId   
    right join tblPkgContractAwardDetails as CA on CA.iPackageId=t1.iPackageId 
    join tblCurrencies as Curr on CA.iCurrency =Curr.iCurrencyId  


    where tblPrograms.vsSysProgramId='JICA'   
    group by t1.vssyspackageid,CA.rAmount,Curr.vsShortCode 

Contractor Award 세부 정보에 할당 된 패키지가있는 경우 하나의 열에 표시됩니다.SQL Server 일부 특정 조건 쿼리

예 : GWSSP/01, GWSSP/02 다음에 전체 패키지가 다음 열에 표시됩니다.

답변

0

질문이 약간 모호하기 때문에 원하는 내용을 정확히 모르겠지만 금액 열의 합계를 표시하는 지정된 패키지에 대해 단일 행을 원한다고 추측합니다. 이것은 내가 어쨌든 당신의 질문에서 이해할 수있는 것입니다!

SELECT DISTINCT t1.vssyspackageid, 
       SUM(CA.rAmount) AS TotalAmount, 
       Curr.vsShortCode AS Currency  
FROM   tblPrograms   
INNER JOIN  tblProgramsAndPackages ON tblPrograms.vsSysProgramId = 
              tblProgramsAndPackages.vsSysProgramId   
INNER JOIN  tblPackages AS t1 ON tblProgramsAndPackages.iPackageId = 
            t1.iPackageId   
RIGHT JOIN  tblPkgContractAwardDetails AS CA ON CA.iPackageId = 
                t1.iPackageId 
JOIN   tblCurrencies AS Curr ON CA.iCurrency = 
             Curr.iCurrencyId  
WHERE   tblPrograms.vsSysProgramId = 'JICA' 
    AND  t1.[YOUR_COLUMN_NAME_HERE] = 'GWSSP/01' 
GROUP BY  t1.vssyspackageid, 
       Curr.vsShortCode 

그냥 몇 가지 참고 사항 :

  1. 나는 tblPackages 테이블의 열 이름을 모르는 등 'GWSSP이/01'가 속한, 그래서위한 것으로 남아있는 같은 값
  2. 패키지에 여러 통화가있는 경우 여전히 여러 행이 표시되므로 선택 및 그룹화 절에서 Curr.vsShortCode을 제거해야합니다.
  3. 여러 표준과 단축키를 사용하는 것뿐만 아니라 이해하기 어렵고 이해하기 어려웠 기 때문에 코드를 약간 수정했습니다!