2014-02-05 6 views
0

동료를 위해 작성된 쿼리를 가져 오려고 시도하지만 무한 실행 문제로 실행됩니다. 나는 느낌 ive가 어딘가에 조인을 놓친 것을 가지고있다. 그러나 나는 can not를 계산한다. 확실히 그 비교적 간단한 문제지만, SQL은 가장 확실한 내 장점입니다 definetley입니다!쿼리가 무한대로 실행 중입니다.

set ANSI_NULLS ON 
set QUOTED_IDENTIFIER ON 
go 


ALTER PROCEDURE [dbo].[GET_DAILY_WEB_SALES] @Company varchar(4), @Finyear int , @ShopNum int 
AS 
BEGIN 
SET NOCOUNT ON ; 
select dv.date, dv.sty_ret_type, season, dv.sty_pdt_type, isnull(sale.salesvalue,0) SalesValue, isnull(sale.refundvalue,0) RefundValue, isnull((sale.salesvalue + sale.refundvalue),0) GrossSales, isnull(sale.salesunits,0) SalesUnits, isnull(sale.refundunits,0) RefundUnits , 
isnull((sale.salesunits + sale.refundunits),0) as TotalUnits, sale.transactions 
from 
(select d.date_id , d.date, dv.sty_pdt_type, dv.sty_ret_type, dv.season from cx_dates d, cx_val_ret_type, cx_styles dv 
where [email protected]) dv left outer join 
(
SELECT s.sty_ret_type,si.date_id , sum(case when si.linevalue < 0 then si.linevalue else 0 end) AS refundvalue, sum(case when si.linevalue > 0 then si.linevalue else 0 end) AS salesvalue, 
sum(case when si.linevalue < 0 then si.linequantity else 0 end) AS refundunits, sum(case when si.linevalue > 0 then si.linequantity else 0 end) AS salesunits , count(distinct sales_id) as Transactions 
from cx_styles s inner join 
cx_sales_items si on s.style_id=si.style_id inner join 
cx_dates d on si.date_id=d.date_id 
where 
[email protected] and 
si.kpi=1 
AND s.season = @Company 
and [email protected] 
GROUP BY si.date_id , s.sty_ret_type ) sale 
on dv.date_id=sale.date_id 
and dv.sty_ret_type=sale.sty_ret_type 
ORDER BY dv.date,season,dv.sty_ret_type 
END 

어떤 도움이나 제안이 환상적입니다!

답변

1

첫 번째 내부 선택 (dv)은 3 개의 테이블 (cx_dates, cx_val_ret_type 및 cx_styles) 중에서 선택하지만 결합 매개 변수는 지정하지 않습니다.

+0

... 따라서 직교 좌표 생성 : http://www.fluffycat.com/SQL/Cartesian-Joins/ – gvee

+0

@gvee 올바른. 어쩌면 내가 회신하여 내 대답을 추가해야하지만, 질문은 조인을 놓친 때 발생하는 함정에 대한 이해를 보여주는 것처럼 보였다. – Phylogenesis

관련 문제