Sql CTE+插入错误:字符串或二进制数据将被截断
没有什么背景。我们从报告部门得到一份文件。这是它的工作做了一堆聚合,并推到另一个文件,一个合格的文件 错误显示: Msg 8152,第16级,第13状态,第2行 字符串或二进制数据将被截断。 声明已终止Sql CTE+插入错误:字符串或二进制数据将被截断,sql,insert,sql-server-2012,common-table-expression,Sql,Insert,Sql Server 2012,Common Table Expression,没有什么背景。我们从报告部门得到一份文件。这是它的工作做了一堆聚合,并推到另一个文件,一个合格的文件 错误显示: Msg 8152,第16级,第13状态,第2行 字符串或二进制数据将被截断。 声明已终止 有人能帮忙吗?有人知道发生了什么吗?从错误中可以明显看出,对于一个或多个列,您试图设置的数据大于列大小。。我将查看名称列和地址列。一种简单的调试方法是在select子句中的列周围放置一个MAXLEN,并将其与表定义进行比较。看起来您正试图将10磅的shinola装进一个5磅的袋子中。观察效果非常
有人能帮忙吗?有人知道发生了什么吗?从错误中可以明显看出,对于一个或多个列,您试图设置的数据大于列大小。。我将查看名称列和地址列。一种简单的调试方法是在select子句中的列周围放置一个MAXLEN,并将其与表定义进行比较。看起来您正试图将10磅的shinola装进一个5磅的袋子中。观察效果非常好。听起来很技术……没错,我注释掉了部分代码,直到我看到它失败的地方。这个错误使我认为内存中的数据将被截断,因此不允许我插入..但我想这是有意义的,因为直到我尝试插入并匹配字段的长度,我才有问题。谢谢你,伙计。
;
With CTE AS
(
SELECT IIF (ISNULL (POLHOLDERID,'') ='', Member_id, PolHolderId) AS RespMemberId,
CASE WHEN ( Member_id = PolHolderId) then 1 When ISNULL (PolHolderId,'') <> '' THEN 2 ELSE 3 END AS RespLevel ,
ROW_Number() OVER (PARTITION BY [Case Base#] ORDER BY CASE WHEN ( Member_id = PolHolderId) then 1 When ISNULL (PolHolderId,'') <> '' THEN 2 ELSE 3 END, DOB) AS RN,
* FROM [dbo].[AllHRS]
)
INSERT INTO dbo.Eligibility (
[CaseBaseNo]
,[RecordType]
,[HealthPlanId]
,[PlanId]
,[HPMemberId]
,[HPMemberId2]
,[FirstName]
,[MiddleName]
,[LastName]
,[Street1]
,[Street2]
,[City]
,[State]
,[Zip]
,[GroupNumber]
,[UserDefined1]
,[UserDefined2]
,[StartDate]
,[TerminationDate]
,[InitialActivationCode]
,[LoadAmount]
,[ServiceDate]
,[ServiceCode]
,[ServiceDescription]
,[HPReferenceNo]
,[IssueNewCard]
,[Language]
,[Filler])
SELECT
[Case Base#] as CaseBase,
'117A' as RecordType,
'H81' as HealthPlanID,
'H81-117A' as PlanId,
RespMemberId AS MemberId,
null,
IIF (ISNULL (POLHOLDERID,'') ='', Member_First_Name, IIF(Charindex(',', PolHolderName)> 0, Substring(PolHolderName, 1,Charindex(',', PolHolderName)-1), PolHolderName)),
NULL,
IIF (ISNULL (POLHOLDERID,'') ='', Member_Last_Name, Substring(LTRIM(IIF(Charindex(',', PolHolderName)> 0, Substring(PolHolderName, Charindex(',', PolHolderName)+1,LEN(PolHolderName)), PolHolderName)),1,charIndex(' ',
LTRIM(IIF(Charindex(',', PolHolderName)> 0, Substring(PolHolderName, Charindex(',', PolHolderName)+1,LEN(PolHolderName)), PolHolderName))+' '))),
ADDRESS1,
ADDRESS2,
CITY,
STATE,
ZIP,
[Case Base#],
NULL,
NULL,
FORMAT(GETDATE(), 'MM/dd/yyyy') AS [START DATE],
IIF([Member TermDate] is null, '',
DATEADD(month,30,[Member TermDate])),
NULL,
0.00,
[INTERVIEW DATE],
CASE
WHEN Clinical_Variable not like '%57' and Clinical_Variable not like '%58' THEN 'HRS'
WHEN Clinical_Variable like '%57' THEN 'HRA'
WHEN Clinical_Variable like '%58' THEN 'CC'
END as Service_Code,
NULL,
0.00,
'YES',
NULL,
NULL
FROM CTE WHERE RN =1