2015-11-26 47 views
1

我有這個問題,有人可以幫助我嗎?謝謝。 按照我的代碼。Msg 8152,Level 16,State 2,Line 22 - 字符串或二進制數據將被截斷

CREATE TABLE #TEMP(
DocID Decimal(7,0), 
Ano smallint, 
nomefiscal varchar(50) COLLATE Latin1_General_CS_AS_WS, 
morada varchar(100) COLLATE Latin1_General_CS_AS_WS, 
cod_postal char(8) COLLATE Latin1_General_CS_AS_WS, 
Localidade varchar(60) COLLATE Latin1_General_CS_AS_WS, 
no_contribuinte char(20) COLLATE Latin1_General_CS_AS_WS, 
telefone char(20) COLLATE Latin1_General_CS_AS_WS, 
telemovel char(20) COLLATE Latin1_General_CS_AS_WS, 
email varchar(60) COLLATE Latin1_General_CS_AS_WS, 
metodo_envio varchar(30) COLLATE Latin1_General_CS_AS_WS, 
id_site int, 
NomeLojaDescarga varchar(60) COLLATE Latin1_General_CS_AS_WS, 
MoradaDescarga varchar(150) COLLATE Latin1_General_CS_AS_WS, 
CodigoPostalDescarga char(8) COLLATE Latin1_General_CS_AS_WS, 
LocalidadeDescarga varchar(60) COLLATE Latin1_General_CS_AS_WS 
) 

INSERT INTO #TEMP (DocID, Ano, nomefiscal, morada, cod_postal, Localidade, no_contribuinte, telefone, telemovel, email, metodo_envio, id_site, NomeLojaDescarga, MoradaDescarga, CodigoPostalDescarga, LocalidadeDescarga) 

select Mov.DocID,Mov.Ano, Cab.nomefiscal, Cab.morada, Cab.cod_postal,Cab.localidade,Cab.no_contribuinte,Cab.telefone,Cab.telemovel,Cab.email, metodo_envio, id_site, 
    CASE WHEN metodo_envio = 'PickMe' AND LEN(PkMe_Nome_loja) > 2 THEN PkMe_Nome_loja WHEN metodo_envio IN ('Standard', 'Ilhas', 'Verificar no backoffice') AND LEN(entrega_nome) > 2 THEN entrega_nome ELSE nomefiscal END AS 'NomeLojaDescarga', 
    CASE WHEN metodo_envio = 'PickMe' AND LEN(PkMe_Morada) > 2 THEN PkMe_Morada WHEN metodo_envio IN ('Standard', 'Ilhas', 'Verificar no backoffice') AND LEN(entrega_morada1) > 2 THEN RTRIM(entrega_morada1) + ',' + RTRIM(entrega_morada2) ELSE morada END AS 'MoradaDescarga', 
    CASE WHEN metodo_envio = 'PickMe' AND LEN(PkMe_Cod_postal) > 2 THEN PkMe_Cod_postal WHEN metodo_envio IN ('Standard', 'Ilhas', 'Verificar no backoffice') AND LEN(entrega_cp) > 2 THEN entrega_cp ELSE cod_postal END AS 'CodigoPostalDescarga', 
    CASE WHEN metodo_envio = 'PickMe' AND LEN(PkMe_Cidade) > 2 THEN PkMe_Cidade WHEN metodo_envio IN ('Standard', 'Ilhas', 'Verificar no backoffice') AND LEN(entrega_cidade) > 2 THEN entrega_cidade ELSE localidade END AS 'LocalidadeDescarga' 
    from [sofrapa].[dbo].[DOC_Mov] Mov 
    INNER JOIN 
    [sofrapa].[dbo].DOC_MovCompl Compl 
    ON Mov.DocID = Compl.DocID and Mov.Ano = Compl.Ano and Mov.AreaID = Compl.AreaID and Mov.Aplicacao = Compl.Aplicacao and Mov.TipoDocID = Compl.TipoDocID and Mov.TipoTerceiro = Compl.TipoTerceiro 
    INNER JOIN 
    [sofrapa].[dbo].[ENCOMENDAS_CAB_BACKUP] Cab ON Cab.id_site = Compl.NoDocEntid 
    WHERE Mov.AreaID = 300 and Mov.Ano = YEAR(GETDATE()) and Mov.Aplicacao= 'VND' and Mov.TipoTerceiro = 'C' and Mov.TerceiroID = 2369 and Mov.TipoDocID = 'F' 

    SELECT * FROM #TEMP 


DROP TABLE #TEMP 

我需要創建一個新表#temp並從新表中添加另一個表的信息,但我有這個錯誤。

回答

0
IF OBJECT_ID('tempdb.dbo.#temp') IS NOT NULL 
    DROP TABLE #temp 
GO 

SELECT Mov.DocID,Mov.Ano, Cab.nomefiscal, Cab.morada, Cab.cod_postal,Cab.localidade,Cab.no_contribuinte,Cab.telefone,Cab.telemovel,Cab.email, metodo_envio, id_site, 
    CASE WHEN metodo_envio = 'PickMe' AND LEN(PkMe_Nome_loja) > 2 THEN PkMe_Nome_loja WHEN metodo_envio IN ('Standard', 'Ilhas', 'Verificar no backoffice') AND LEN(entrega_nome) > 2 THEN entrega_nome ELSE nomefiscal END AS 'NomeLojaDescarga', 
    CASE WHEN metodo_envio = 'PickMe' AND LEN(PkMe_Morada) > 2 THEN PkMe_Morada WHEN metodo_envio IN ('Standard', 'Ilhas', 'Verificar no backoffice') AND LEN(entrega_morada1) > 2 THEN RTRIM(entrega_morada1) + ',' + RTRIM(entrega_morada2) ELSE morada END AS 'MoradaDescarga', 
    CASE WHEN metodo_envio = 'PickMe' AND LEN(PkMe_Cod_postal) > 2 THEN PkMe_Cod_postal WHEN metodo_envio IN ('Standard', 'Ilhas', 'Verificar no backoffice') AND LEN(entrega_cp) > 2 THEN entrega_cp ELSE cod_postal END AS 'CodigoPostalDescarga', 
    CASE WHEN metodo_envio = 'PickMe' AND LEN(PkMe_Cidade) > 2 THEN PkMe_Cidade WHEN metodo_envio IN ('Standard', 'Ilhas', 'Verificar no backoffice') AND LEN(entrega_cidade) > 2 THEN entrega_cidade ELSE localidade END AS 'LocalidadeDescarga' 
INTO #temp 
FROM [sofrapa].[dbo].[DOC_Mov] Mov 
JOIN [sofrapa].[dbo].DOC_MovCompl Compl ON Mov.DocID = Compl.DocID and Mov.Ano = Compl.Ano and Mov.AreaID = Compl.AreaID and Mov.Aplicacao = Compl.Aplicacao and Mov.TipoDocID = Compl.TipoDocID and Mov.TipoTerceiro = Compl.TipoTerceiro 
JOIN [sofrapa].[dbo].[ENCOMENDAS_CAB_BACKUP] Cab ON Cab.id_site = Compl.NoDocEntid 
WHERE Mov.AreaID = 300 and Mov.Ano = YEAR(GETDATE()) and Mov.Aplicacao= 'VND' and Mov.TipoTerceiro = 'C' and Mov.TerceiroID = 2369 and Mov.TipoDocID = 'F' 

SELECT * FROM #TEMP 

嘗試使用 - SELECT ... INTO ... FROM ...

+1

哇!其作品。並幫助我很多,非常感謝:D:D祝你有美好的一天! –

+0

歡迎您:)順便查看我們的博客;) – Devart

相關問題