2011-09-12 3 views
0

나는이 쿼리, 수 있도록 변화를위한 보기을 만들 필요가m.arq_datam2.arq_data 값 때와 같은 선택 사용이 보기 : 여기뷰에서 하위 쿼리를 사용하는 방법은 무엇입니까?

내 현재 검색어입니다.

SELECT distinct(p.num_processo),p.num_proc_jud,a.assunto,su.subassunto,ma.Materia,u.Unidade ,M.COD_UNIDADE as cod_serv ,u.Unidade as servidor ,' ' as serv_ativo, 
' ' as data_vinc ,' ' as V_ativo, M.motivo,M.data_movimentacao as data_mov_distr , 
(select max(m2.arq_data) from movimentacao m2 where m2.arq_data 
BETWEEN '2011-08-01 00:00:00'AND '2011-08-31 23:00:00' and m2.num_processo = 
    p.num_processo) as Data_Arq_Desarq , status = 'A' 

--pra view 
, M.arq_data 

FROM processo p 
INNER JOIN assunto a ON a.cod_assunto = p.cod_assunto 
INNER JOIN subassunto su ON su.cod_subassunto = p.cod_subassunto 
LEFT JOIN materia ma ON ma.cod_materia = p.cod_materia 
inner JOIN movimentacao M on M.num_processo = p.num_processo 
INNER JOIN Unidade u ON u.cod_unidade = M.COD_UNIDADE 
where 
not exists(select * from anexos a where a.num_proc_anexo = p.num_processo and a.ativo = 1) 
and not exists(select * from movimentacao m1 where m1.num_movimentacao= M.num_movimentacao and m1.motivo = 10 and m1.arquivado = 0) 
and (not exists (select * from distrib_vincjud d2 where d2.num_processo = p.num_processo) 
or p.num_processo in (select d3.num_processo from distrib_vincjud d3 
         where d3.num_processo = p.num_processo 
         and d3.cod_servidor not in(select cod_servidor from servidor) 
         and d3.id_vinc in (select max(d4.id_vinc) from distrib_vincjud d4 
        where d4.num_processo = d3.num_processo and d4.data_vinc <= M.arq_data))) 
and M.COD_UNIDADE in (select M.COD_UNIDADE from movimentacao m2 where 
(m2.cod_ORIGEM_MOV = '26000181' or m2.cod_ORIGEM_MOV = '2600000X')and m2.num_processo = p.num_processo) 
and p.tipo = 'J' 
and M.arq_data >= '2011-08-01 00:00:00'AND M.arq_data <='2011-08-31 23:00:00' 
+0

m.arq_data 및 m2.arq_data 값을 변경하는 것을 허용한다는 것은 무엇을 의미합니까? –

+0

select * FROM the_view where m.arq_data = X AND m2.arq_data = Y – celsowm

+0

그는 아마도 두 개의 열이 변수가되도록 허용하는 것을 의미했을 것입니다. – deutschZuid

답변

1

보기에는 매개 변수를 사용할 수 없습니다. eters. 대신 테이블 반환 udf (또는 저장 프로 시저)로 구현하십시오.

+0

예가 있습니까? – celsowm

+1

@celsowm, 여기 UDF에서 읽으십시오. http://www.extremeexperts.com/sql/articles/UDFFunctions.aspx –

+0

예를 들어 또 다른 링크 : http://msdn.microsoft.com/en-us/library/ms191165 .aspx – a1ex07

1

m2.arq_data BETWEEN '2011-08-01 00:00:00'AND '2011-08-31 23:00:00'과 같은 조건의 날짜가 변경되도록보기를 정의하려는 경우 요구 사항이 무엇인지에 따라 다릅니다. 날짜 범위는 다음 SQL을 사용하여 일반적으로 정의 할 수 있습니다 매우 간단한 일이 아닌 경우

m2.arq_data BETWEEN GetDate() AND DATEADD (dd, 31, GetDate()) 

:이 날짜 범위가 항상 between today and 31 days from now 될 것입니다 경우 예를 들어

다음은 다음과 같이 될 줄을 바꿀 수 당신은 저장된 proc 나 udf를 사용하고 그것을 date params에 전달하는 것을 고려할 수있다.

+0

DATEADD (MM, 1, GETDATE());)이어야합니다. – HardCode

관련 문제