Sql server 添加UNION ALL SELECT后,字符串或二进制数据将被截断
我对SQL世界相当陌生,但已经在开发中很多年了。我得到了一个非常令人困惑的错误。我在SELECT语句中添加了最后一个UNION ALL SELECT(带有ncr\u actual\u dev的那个),只有在声明表时才会导致错误。如果我单独运行整个SELECT语句(粗体中的部分),它将完成,不会出现问题。或者,如果我像第二个示例那样运行它,则没有错误。我错过了什么Sql server 添加UNION ALL SELECT后,字符串或二进制数据将被截断,sql-server,tsql,sql-server-2012,Sql Server,Tsql,Sql Server 2012,我对SQL世界相当陌生,但已经在开发中很多年了。我得到了一个非常令人困惑的错误。我在SELECT语句中添加了最后一个UNION ALL SELECT(带有ncr\u actual\u dev的那个),只有在声明表时才会导致错误。如果我单独运行整个SELECT语句(粗体中的部分),它将完成,不会出现问题。或者,如果我像第二个示例那样运行它,则没有错误。我错过了什么 DECLARE @table TABLE (prod_code varchar(10),
DECLARE @table TABLE (prod_code varchar(10),
Stage varchar(10),
Stage_Date date)
INSERT INTO @table
SELECT product_code, 'PLAN' AS Stage, ncr_actual_plan AS Stage_Date
FROM ip.product_custom_data
WHERE ncr_actual_plan IS NOT NULL
UNION ALL SELECT product_code, 'CD' AS Stage, ncr_actual_cd
FROM ip.product_custom_data
WHERE ncr_actual_cd IS NOT NULL
UNION ALL SELECT product_code, 'CCA' AS Stage, ncr_actual_cca
FROM ip.product_custom_data
WHERE ncr_actual_cca IS NOT NULL
UNION ALL SELECT product_code, 'CONCEPT' AS Stage, ncr_actual_concept
FROM ip.product_custom_data
WHERE ncr_actual_concept IS NOT NULL
UNION ALL SELECT product_code, 'DEVELOPMENT' AS Stage, ncr_actual_dev
FROM ip.product_custom_data
WHERE ncr_actual_dev IS NOT NULL
使用:
'DEVELOPMENT'作为Stage
有11个字符,您已尝试插入到列Stage varchar(10)
或者,您可以使用temp table并选择进入,如:
SELECT product_code, 'PLAN' AS Stage, ncr_actual_plan AS Stage_Date
INTO #table
FROM ip.product_custom_data
WHERE ncr_actual_plan IS NOT NULL
UNION ALL SELECT product_code, 'CD' AS Stage, ncr_actual_cd
FROM ip.product_custom_data
WHERE ncr_actual_cd IS NOT NULL
UNION ALL SELECT product_code, 'CCA' AS Stage, ncr_actual_cca
FROM ip.product_custom_data
WHERE ncr_actual_cca IS NOT NULL
UNION ALL SELECT product_code, 'CONCEPT' AS Stage, ncr_actual_concept
FROM ip.product_custom_data
WHERE ncr_actual_concept IS NOT NULL
UNION ALL SELECT product_code, 'DEVELOPMENT' AS Stage, ncr_actual_dev
FROM ip.product_custom_data
WHERE ncr_actual_dev IS NOT NULL;
SELECT *
FROM #table;
哦!我盯着它看了这么久,完全没注意到。谢谢
DECLARE @table TABLE (prod_code varchar(100), Stage varchar(100), Stage_Date date) ...
SELECT product_code, 'PLAN' AS Stage, ncr_actual_plan AS Stage_Date
INTO #table
FROM ip.product_custom_data
WHERE ncr_actual_plan IS NOT NULL
UNION ALL SELECT product_code, 'CD' AS Stage, ncr_actual_cd
FROM ip.product_custom_data
WHERE ncr_actual_cd IS NOT NULL
UNION ALL SELECT product_code, 'CCA' AS Stage, ncr_actual_cca
FROM ip.product_custom_data
WHERE ncr_actual_cca IS NOT NULL
UNION ALL SELECT product_code, 'CONCEPT' AS Stage, ncr_actual_concept
FROM ip.product_custom_data
WHERE ncr_actual_concept IS NOT NULL
UNION ALL SELECT product_code, 'DEVELOPMENT' AS Stage, ncr_actual_dev
FROM ip.product_custom_data
WHERE ncr_actual_dev IS NOT NULL;
SELECT *
FROM #table;