消息8152,级别16,状态2,行22 - 字符串或二进制数据将被截断

时间:2015-11-26 10:50:18

标签: sql sql-server

我有这个问题,有人可以帮帮我吗?谢谢。 按照我的代码。

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并从新表中的另一个表中添加信息,但是我有这个错误。

1 个答案:

答案 0 :(得分: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 ...