我正在尝试运行下面的查询,但不知何故我做错了什么。我不是 SQL Server 方面的专家,但据我所知,我使用的代码没有问题,但如果有人能看到我的问题,请向我指出。
INSERT INTO
[dbo].[StockItems] ([StockCode],[Description],[Mass],[UnitCost],[MinimumStock])
SELECT DISTINCT
[s].[New_StockCode],
RTRIM(LTRIM(ISNULL([s].[New_Description], ''))),
[s].[Mass],
CAST([s].[ UnitCost ] AS float),
CAST([s].[Minimum Stock] AS float)
FROM
[ExcelItemStock].[dbo].[StockItems$] AS [s]
WHERE
[s].[New_StockCode] NOT IN (
SELECT
[StockCode]
FROM
[dbo].[StockItems]
) AND
[s].[New_StockCode] IS NOT NULL AND
[s].[ UnitCost ] IS NOT NULL AND
[s].[Minimum Stock] IS NOT NULL
错误:
The select list for the INSERT statement contains fewer items than the insert list. The number of SELECT values must match the number of INSERT columns.
Incorrect syntax near the keyword 'AND'.
我在INSERT 和SELECT 中使用了相同数量的项目。我也看不出我的问题出在哪里与 AND 错误有关?
我正在使用 linq-to-entities,下面是我的类(class),如果它有任何帮助的话:
public class StockItem
{
public StockItem()
{
SectionGroups = new HashSet<SectionGroup>();
}
public int Id { get; set; }
private string _stockCode;
[Index(IsUnique = true)]
[StringLength(450)]
[Required]
public string StockCode
{
get { return _stockCode; }
set { _stockCode = value.ToUpper(); }
}
public string Description { get; set; }
public virtual ICollection<SectionGroup> SectionGroups { get; set; }
public double? Mass { get; set; }
public double UnitCost { get; set; }
public double? MinimumStock { get; set; }
public override string ToString()
{
return StockCode + " - " + Description;
}
}
编辑: 添加了建议的 ,
并得到错误:
Incorrect syntax near 's'.
@Sachu -- 这是一张图片,也许可以更好地解释我为什么使用 StockItems$
我找到了我的问题!很抱歉浪费了你所有的时间。我忘记将额外的列添加到我的 ExcelItemStock
数据库中的 dbo.StockItems$
表中。完全是我的错!
最佳答案
您的 SELECT 语句中的问题:
CAST([s].[ UnitCost ] AS float)
CAST([s].[Minimum Stock] AS float)
缺少这些线之间的共同点
关于c# - 确保我的 SQL 查询是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30888026/