2011-09-12 20 views
0

私はこのクエリ変更許可のためビューを作成する必要がありますm.arq_datam2.arq_data値ときのような選択用途このビュー、:ここでViewでサブクエリを使用するにはどうすればよいですか?

現在のクエリです:

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 values'とはどういう意味ですか? –

+0

は*彼はおそらく2つの列が – celsowm

+0

= m.arq_dataはXとm2.arq_dataを= the_viewから選択した例がありますか? – deutschZuid

答えて

1

ビューは取得できませんeters。代わりにテーブル値のudf(またはストアドプロシージャ)として実装します。

+0

可変とすることができ意図Y – 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'のような条件の日付を変更することで動作するようにあなたのビューを定義したいと言っている場合、それはあなたの要件が何であるかによって決まります。例えば

この日付範囲は常にbetween today and 31 days from now、あなたはこのようなものにするために、この行を変更することができます場合:日付範囲は、その後、SQLを使用して包括的に定義することができ、かなり単純なものではない場合

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

ストアドprocまたはudfを使用して日付paramsを渡すことを検討することをお勧めします。

+0

DATEADD(MM、1、GETDATE());)にする必要があります。 – HardCode

関連する問題