【发布时间】:2013-03-14 11:39:55
【问题描述】:
问题是我试图将一些数据插入到我的 SQL Server 数据库中,但由于某种原因,我不断收到臭名昭著的“无效列名”错误,结果没有插入任何内容。
现在,我相信我知道为什么(某种程度上)会发生这种情况,因为我正在尝试使用案例查询插入一个基于另一列中的字段值的值,但我不确定我是否'我真的做对了 - 查看代码:
INSERT INTO dbo.table_name(points, discount)
VALUES
(3, CASE WHEN (points = 6) THEN 0.5 WHEN (points = 12) THEN 1.0 ELSE 0 END
我在“points”列上得到了无效的列名。它肯定存在,所以我认为我的查询不正确,或者我应该以不同的方式解决这个问题是否正确?
我使用的是 SQL Server 2008 R2 - 不确定这是否有什么不同。
【问题讨论】:
-
(points = 6)和(points = 12)来自哪里?你想引用什么points?我不明白你想在这里做什么。 -
对不起,我想我可能有点混淆了...我希望折扣值是 0、0.5 或 1.0,具体取决于点字段的值,我再次不确定我正在做正确的事情......
-
但是在您的示例中,您插入的每一行的点值都为
3,因此不会有points值6或12。您是否尝试进行更新?也许您应该发布您的表结构一些示例数据,然后发布您想要的查询结果。 -
哦,我明白了,不,这只是我作为示例发布的一行,在此之后还有其他几行具有不同的点值(即 5、6、12 等)。
-
请用一些示例数据和所需的结果编辑您的原始帖子,这将有助于解决您的问题。 :)
标签: sql-server sql-server-2008-r2 sql-insert