0

手順に2つの選択がありますが、最初の選択のIDENTIFICACAO_Aが2番目の選択のIDENTIFICACAO_Bと共通している行だけを選択したいと思います。

クエリ:

SELECT
(CONVERT(VARCHAR,fic.reg_codigo_lotado_atual) + '.' + CONVERT(VARCHAR,fic.cla_codigo) + '.' + CONVERT(VARCHAR,fic.reg_codigo_lotado_origem) + '.' + CONVERT(VARCHAR,fic.fic_numero_livro) + '/' + CONVERT(VARCHAR,fic.fic_versao)) AS IDENTIFICACAO_A,
cla.cla_nome,
fic.fic_ca,
fic.fic_fa,
fic.reg_codigo_lotado_atual,
fic.cla_codigo,
fic.reg_codigo_lotado_origem,
fic.fic_numero_livro,
fic.fic_versao,
fic.fic_ato_oficial,
fic_localizacao_numero,
fic_localizacao_data_em,
qua.qua_nome,
fic.fic_localizacao_do,
adm.adm_codigo_ua,
adm.adm_codigo_uv,
adm.adm_digito,
adm.adm_decodificada,
adm.adm_sigla,
form.for_nome,
fic.fic_ocupacao_data,
fic.fic_ocupacao_do,
fic.fic_ocupacao_data_cessacao,
fic.fic_ocupacao_do_cessacao,
ser.ser_nome,
ser.ser_rg,
ser.ser_cpf,
fic.fic_ocupacao_observacao,
esp.esp_descricao,
fic.fic_alteracao_vigencia,
fic.fic_alteracao_decreto,
fic.fic_alteracao_data,
fic.fic_alteracao_qua_codigo,
fic.fic_alteracao_do,
fic.fic_situacao_vc,
fic.fic_situacao_pp,
fic.fic_situacao_ocupado,
fic.fic_nova_identificacao,
fic.fic_observacoes_gerais
FROM
SICAF.dbo.tab_fichas AS fic
 INNER JOIN
SICAF.dbo.tab_classes AS cla ON cla.cla_codigo = fic.cla_codigo
 LEFT JOIN
SICAF.dbo.tab_sub_quadros AS qua ON qua.qua_codigo = fic.qua_codigo
 LEFT JOIN
SICAF.dbo.tab_unidade_adm AS adm ON adm.adm_codigo = fic.adm_codigo
 LEFT JOIN
SICAF.dbo.tab_formas AS form ON form.for_codigo = fic.for_codigo
 LEFT JOIN
SICAF.dbo.tab_servidores AS ser ON ser.ser_codigo = fic.ser_codigo
 LEFT JOIN
SICAF.dbo.tab_especies AS esp ON esp.esp_codigo = fic.esp_codigo


SELECT
(CONVERT(VARCHAR,fic.reg_codigo_lotado_atual) + '.' + CONVERT(VARCHAR,fic.cla_codigo) + '.' + CONVERT(VARCHAR,fic.reg_codigo_lotado_origem) + '.' + CONVERT(VARCHAR,fic.fic_numero_livro) + '/' + CONVERT(VARCHAR,fic.fic_versao)) AS IDENTIFICACAO_B,
cla.cla_nome,
fic.fic_ca,
fic.fic_fa,
fic.reg_codigo_lotado_atual,
fic.cla_codigo,
fic.reg_codigo_lotado_origem,
fic.fic_numero_livro,
fic.fic_versao,
fic.fic_ato_oficial,
fic_localizacao_numero,
fic_localizacao_data_em,
qua.qua_nome,
fic.fic_localizacao_do,
adm.adm_codigo_ua,
adm.adm_codigo_uv,
adm.adm_digito,
adm.adm_decodificada,
adm.adm_sigla,
form.for_nome,
fic.fic_ocupacao_data,
fic.fic_ocupacao_do,
fic.fic_ocupacao_data_cessacao,
fic.fic_ocupacao_do_cessacao,
ser.ser_nome,
ser.ser_rg,
ser.ser_cpf,
fic.fic_ocupacao_observacao,
esp.esp_descricao,
fic.fic_alteracao_vigencia,
fic.fic_alteracao_decreto,
fic.fic_alteracao_data,
fic.fic_alteracao_qua_codigo,
fic.fic_alteracao_do,
fic.fic_situacao_vc,
fic.fic_situacao_pp,
fic.fic_situacao_ocupado,
fic.fic_nova_identificacao,
fic.fic_observacoes_gerais
FROM
SICAF2.dbo.tab_fichas AS fic
 INNER JOIN
SICAF2.dbo.tab_classes AS cla ON cla.cla_codigo = fic.cla_codigo
 LEFT JOIN
SICAF2.dbo.tab_sub_quadros AS qua ON qua.qua_codigo = fic.qua_codigo
 LEFT JOIN
SICAF2.dbo.tab_unidade_adm AS adm ON adm.adm_codigo = fic.adm_codigo
 LEFT JOIN
SICAF2.dbo.tab_formas AS form ON form.for_codigo = fic.for_codigo
 LEFT JOIN
SICAF2.dbo.tab_servidores AS ser ON ser.ser_codigo = fic.ser_codigo
 LEFT JOIN
SICAF2.dbo.tab_especies AS esp ON esp.esp_codigo = fic.esp_codigo

両方のSelectを返すにはどうすればよいですか?

4

4 に答える 4

1

両方のクエリ間で内部結合を使用できます。

Select * From 
(
SELECT
(CONVERT(VARCHAR,fic.reg_codigo_lotado_atual) + '.' + CONVERT(VARCHAR,fic.cla_codigo) + '.' + CONVERT(VARCHAR,fic.reg_codigo_lotado_origem) + '.' + CONVERT(VARCHAR,fic.fic_numero_livro) + '/' + CONVERT(VARCHAR,fic.fic_versao)) AS IDENTIFICACAO_A,
cla.cla_nome,
fic.fic_ca,
fic.fic_fa,
fic.reg_codigo_lotado_atual,
fic.cla_codigo,
fic.reg_codigo_lotado_origem,
fic.fic_numero_livro,
fic.fic_versao,
fic.fic_ato_oficial,
fic_localizacao_numero,
fic_localizacao_data_em,
qua.qua_nome,
fic.fic_localizacao_do,
adm.adm_codigo_ua,
adm.adm_codigo_uv,
adm.adm_digito,
adm.adm_decodificada,
adm.adm_sigla,
form.for_nome,
fic.fic_ocupacao_data,
fic.fic_ocupacao_do,
fic.fic_ocupacao_data_cessacao,
fic.fic_ocupacao_do_cessacao,
ser.ser_nome,
ser.ser_rg,
ser.ser_cpf,
fic.fic_ocupacao_observacao,
esp.esp_descricao,
fic.fic_alteracao_vigencia,
fic.fic_alteracao_decreto,
fic.fic_alteracao_data,
fic.fic_alteracao_qua_codigo,
fic.fic_alteracao_do,
fic.fic_situacao_vc,
fic.fic_situacao_pp,
fic.fic_situacao_ocupado,
fic.fic_nova_identificacao,
fic.fic_observacoes_gerais
FROM
SICAF.dbo.tab_fichas AS fic
 INNER JOIN
SICAF.dbo.tab_classes AS cla ON cla.cla_codigo = fic.cla_codigo
 LEFT JOIN
SICAF.dbo.tab_sub_quadros AS qua ON qua.qua_codigo = fic.qua_codigo
 LEFT JOIN
SICAF.dbo.tab_unidade_adm AS adm ON adm.adm_codigo = fic.adm_codigo
 LEFT JOIN
SICAF.dbo.tab_formas AS form ON form.for_codigo = fic.for_codigo
 LEFT JOIN
SICAF.dbo.tab_servidores AS ser ON ser.ser_codigo = fic.ser_codigo
 LEFT JOIN
SICAF.dbo.tab_especies AS esp ON esp.esp_codigo = fic.esp_codigo
)tbl1

Inner Join 
(
SELECT
(CONVERT(VARCHAR,fic.reg_codigo_lotado_atual) + '.' + CONVERT(VARCHAR,fic.cla_codigo) + '.' + CONVERT(VARCHAR,fic.reg_codigo_lotado_origem) + '.' + CONVERT(VARCHAR,fic.fic_numero_livro) + '/' + CONVERT(VARCHAR,fic.fic_versao)) AS IDENTIFICACAO_B,
cla.cla_nome,
fic.fic_ca,
fic.fic_fa,
fic.reg_codigo_lotado_atual,
fic.cla_codigo,
fic.reg_codigo_lotado_origem,
fic.fic_numero_livro,
fic.fic_versao,
fic.fic_ato_oficial,
fic_localizacao_numero,
fic_localizacao_data_em,
qua.qua_nome,
fic.fic_localizacao_do,
adm.adm_codigo_ua,
adm.adm_codigo_uv,
adm.adm_digito,
adm.adm_decodificada,
adm.adm_sigla,
form.for_nome,
fic.fic_ocupacao_data,
fic.fic_ocupacao_do,
fic.fic_ocupacao_data_cessacao,
fic.fic_ocupacao_do_cessacao,
ser.ser_nome,
ser.ser_rg,
ser.ser_cpf,
fic.fic_ocupacao_observacao,
esp.esp_descricao,
fic.fic_alteracao_vigencia,
fic.fic_alteracao_decreto,
fic.fic_alteracao_data,
fic.fic_alteracao_qua_codigo,
fic.fic_alteracao_do,
fic.fic_situacao_vc,
fic.fic_situacao_pp,
fic.fic_situacao_ocupado,
fic.fic_nova_identificacao,
fic.fic_observacoes_gerais
FROM
SICAF2.dbo.tab_fichas AS fic
 INNER JOIN
SICAF2.dbo.tab_classes AS cla ON cla.cla_codigo = fic.cla_codigo
 LEFT JOIN
SICAF2.dbo.tab_sub_quadros AS qua ON qua.qua_codigo = fic.qua_codigo
 LEFT JOIN
SICAF2.dbo.tab_unidade_adm AS adm ON adm.adm_codigo = fic.adm_codigo
 LEFT JOIN
SICAF2.dbo.tab_formas AS form ON form.for_codigo = fic.for_codigo
 LEFT JOIN
SICAF2.dbo.tab_servidores AS ser ON ser.ser_codigo = fic.ser_codigo
 LEFT JOIN
SICAF2.dbo.tab_especies AS esp ON esp.esp_codigo = fic.esp_codigo
)tbl2
On tbl1.IDENTIFICACAO_A=tbl2.IDENTIFICACAO_B
于 2013-03-07T12:22:25.363 に答える
1

あなたが使用することができます:

select your_fields from table1

intersect

select your_fields from table2
于 2013-03-07T12:38:12.990 に答える
1

ユニオンを使用します。

キー列の名前を両方のクエリで同じになるように変更します。また、両方のクエリを一時テーブルとして保存することをお勧めします。

したがって、最初のクエリが一時テーブルq1に保存され、2番目のクエリがに保存されq2ていて、両方のキー列がであるとしますid

select from q1 where q1.id in (select id from q2)
union
select from q2 where q2.id in (select id from q1)

私がはっきりしていたことを願っています。

于 2013-03-07T13:12:19.727 に答える
0

ここで使用できINます。T1は最初のクエリからの結合テーブルのグループであり、T2は2番目のクエリからの結合テーブルのグループです。構文は次のとおりです。

Select col1,col2,...
From T1
Where IDENTIFICACAO_A in (
   Select IDENTIFICACAO_B
   From T2
)

列名を連結した結果にIDENTIFICACAO_A置き換えることができますIDENTIFICACAO_B

T1T2(上記)が同じ場合、

SELECT X AS IDENTIFICACAO_A,
   cla.cla_nome,
   fic.fic_ca,...
FROM T1
WHERE X = Y

XYを文字列連結関数に置き換えることができます。

于 2013-03-07T12:08:49.263 に答える