2015-12-16 24 views
0
INSERT INTO data_prediction_model 
select *, ( 
CASE WHEN (offer_category like 'Everyday Low Prices on Receipe%' 
OR offer_category like 'Every Day Low Prices%' 

) THEN "EDLP" 


ELSE 
CASE WHEN (offer_category like 'Buy More & Save More%' 
OR offer_category like 'Buy and Get Free' 
) THEN "B1G1" 

ELSE 
CASE WHEN (offer_category like 'Offer on Activation/Qualification%' 
OR offer_category like 'Save on Purchase of select Products/Plans%' 
OR offer_category like 'Coupons Offers%' 
OR offer_category like 'Digital Coupons Offers%' 
OR offer_category like 'Discounted Products%' 
OR offer_category like 'Exchange Offers%' 
OR offer_category like 'Multiple Brand Offers%' 
OR offer_category like 'Free with Rebate' 
) THEN "Discounts" 

END END END) AS offer_category 
FROM data_offer; 
+0

把这个更多的信息。 检查它是否也存在列数问题。 在SO上发布问题之前,请向Google寻求帮助。 –

回答

0

从SQL查询ü说,我以为是你CASE语句时错误

INSERT INTO data_prediction_model 
select *, ( 
CASE WHEN (offer_category like 'Everyday Low Prices on Receipe%' OR 
      offer_category like 'Every Day Low Prices%') 
    THEN "EDLP" 
    WHEN (offer_category like 'Buy More & Save More%' OR 
      offer_category like 'Buy and Get Free') 
    THEN "B1G1" 
    WHEN (offer_category like 'Offer on Activation/Qualification%' OR   
      offer_category like 'Save on Purchase of select Products/Plans%' OR 
      offer_category like 'Coupons Offers%' OR 
      offer_category like 'Digital Coupons Offers%' OR 
      offer_category like 'Discounted Products%' OR 
      offer_category like 'Exchange Offers%' OR 
      offer_category like 'Multiple Brand Offers%' OR 
      offer_category like 'Free with Rebate') 
    THEN "Discounts" 
END) AS offer_category 
FROM data_offer; 

正确的CASE语句顺序, 应该是这样的以下模式

CASE 
    WHEN condition 1 THEN value 1 
    WHEN condition 2 THEN value 2 
    ELSE value 3 
END 

而不是你所做的模式,看起来像这样

CASE 
    WHEN condition 1 THEN value 1 
ELSE CASE 
    WHEN condition 2 THEN value 2 
    END 
END 

希望它能帮助你。

+0

INSERT INTO data.data_prediction_model 选择*,( CASE WHEN OFFER_CATEGORY像 '天天低价的Receipe%',那么 “EDLP” WHEN OFFER_CATEGORY像 '天天低价%',那么 “EDLP” WHEN OFFER_CATEGORY像'购买更多和节省更多% '那么 “B1G1” WHEN OFFER_CATEGORY像' 购买即享Free'THEN “B1G1” ELSE “打折” END)AS OFFER_CATEGORY FROM data_offer;再次出现同样的错误 – akshay

+0

作为@zedfoxus陈述如下.... 1136错误是关于你的插入语句有问题,尝试检查你的data_prediction_model表列和你的插入值...看他们是否匹配的金额和数据类型或不...信用属于他 – Dean

0

1136错误与表和列中的列不匹配有关。

例如:

mysql> create table test (id int, name varchar(20)); 
Query OK, 0 rows affected (0.13 sec) 

mysql> insert into test values (1, 'test', 'hello'); 
ERROR 1136 (21S01): Column count doesn't match value count at row 1 

注意,提供在'hello'形式的附加价值抛出1136错误。表格有2列。提供正确的数据类型的2个值会像这样成功:

mysql> insert into test values (1, 'test'); 
Query OK, 1 row affected (0.03 sec) 

仔细检查data_prediction_model列数是相同data_offer + case语句(S)列数。 Case语句创建一个用于插入的新字段。

编辑:

为了解决这个问题,从data_prediction_model列出所有列。列出data_offer中的所有列。 data_offer应该比data_prediction_model少1列。

+0

@akshay你可以添加'show create table data_prediction_model'和'show create table data_offer'的输出吗? – zedfoxus