2011-09-18 4 views
-1

나는 이것이 오래된 것을 알고 있지만 실제로 이것으로 붙어 있습니다.둘 이상의 행을 반환하는 하위 쿼리

내 서브 PROC 내가 위에있는 하위 쿼리를 다시 작성이

ALTER PROCEDURE [dbo].[sp_GETSOMETHING] 
    [email protected] nCHAR(10) 
AS 
    SELECT A.TENANT, 
      A.LEASEE, 
      A.SUITEE, 
      A.TRADEDATES, 
      A.Area, 
     A.YTDSalesThisYr 

FROM (

SELECT 

LEAS.TENTID AS TENANT, 
LEAS.LEASID AS LEASEE, 
SUIT.SUITID AS SUITEE, 
TB_EMEA_CM_SHIS.TRADEDATE AS TRADEDATES, 
(SELECT TOP 1 SQFT FROM SSQF INNER JOIN SUIT 
ON (SSQF.BLDGID = SUIT.BLDGID AND SSQF.SUITID = SUIT.SUITID) 
      WHERE SSQF.SQFTTYPE = 'NLA' AND SSQF.EFFDATE <=GETDATE() 
    ORDER BY SSQF.EFFDATE DESC)AS Area, 

--SUM(TB_EMEA_CM_SHIS.AMOUNT) AS YTDSalesThisYr 
(select SUM(A.AMOUNT) FROM TB_EMEA_CM_SHIS A WHERE A.TRADEDATE BETWEEN (
SELECT DATEADD(month,-11,(select TOP 1 ENTITY.YEAREND + '01' from ENTITY 
INNER JOIN BLDG ON ENTITY.ENTITYID = BLDG.ENTITYID)) 
)AND GETDATE()) as YTDSalesThisYr ---- i am getting the problem here.. 

FROM 

dbo.leas 
     inner join TB_EMEA_CM_SHIS on 
      (TB_EMEA_CM_SHIS.LEASID = LEAS.LEASID 
      AND TB_EMEA_CM_SHIS.BLDGID = LEAS.BLDGID) 

INNER JOIN BLDG ON 
      BLDG.BLDGID = LEAS.BLDGID 
INNER JOIN SUIT ON 
      (BLDG.BLDGID = SUIT.BLDGID 
      AND LEAS.SUITID = SUIT.SUITID) 
INNER JOIN ENTITY ON 
      ENTITY.ENTITYID = BLDG.BLDGID 

GROUP BY TB_EMEA_CM_SHIS.LEASID, TB_EMEA_CM_SHIS.BLDGID, 
TB_EMEA_CM_SHIS.TRADEDATE, LEAS.TENTID,LEAS.LEASID,SUIT.SUITID 
)A 

어떤 방법 liek domething 간다? 사전에

덕분에

+0

SQL Server의 버전은 무엇이며, 정확히 무엇이 문제입니까? – Wil

+2

코드 작성 방법은 전적으로 귀하의 의견에 달렸지 만 게시하여 도움을 원할 경우 멋지게 형식화 된 코드 조각이 더 많은 관심을 끌고 있습니다. –

답변

1

는 아마 변경 :

SELECT DATEADD(month,-11,(select TOP 1 ENTITY.YEAREND ... 

...에 ...

SELECT TOP 1 DATEADD(month,-11,(select TOP 1 ENTITY.YEAREND ... 

그러나이 모든 TOP 1의 사방 정말 당신의 데이터를 엉망으로 뭔가를 가리 키 모델. ORDER BY없이 TOP 1을 사용하면 어떤 행을 기대합니까?

관련 문제