我仍然在掌握SQL。我花了一些时间并设法构建以下查询。
然后我选择COUNT(*)WHERE activePU = 1,结果为0.我知道应该有数千个。
我查看了视图,发现activePU下的所有单元格都是空白的。
每条记录应该有0或1,不应该是空的。但他们都是空的。从我的语法中可以看出为什么?
我怀疑问题出在我的语法上,因为我的经验不足。
UPDATE rdmatblsandbox.TmpNIMSalesForceDB
SET activePU =
CASE WHEN
(TmpNIMSalesForceDB.SUBSCRIPTION_END_DATE > CURRENT_DATE OR TmpNIMSalesForceDB.SUBSCRIPTION_END_DATE IS NOT NULL) AND
TmpNIMSalesForceDB.SERVICE_ACTIVATION_DATE < CURRENT_DATE AND
TmpNIMSalesForceDB.ROGERS_BILLING_SYSTEM IS NOT NULL
THEN 1
ELSE 0
END
答案 0 :(得分:2)
&#34;字段类型为varchar(1)&#34;
如果它是一个VarChar,你应该写一个字符串而不是一个数字,&#39; 0&#39; 0和&#39; 1&#39;而不是0和1。
从byteint到varchar的自动类型转换会导致&#39; 0&#39;然后将其默默地截断为&#39; &#39;
但你为什么要使用VarChar(1)? VarChars有两个字节的开销,所以最好使用CHAR(1)。或者使用BYTEINT或DECIMAL(1),两者都需要一个字节进行存储,你不会遇到自动类型转换的问题...