找不到列“ a”或用户定义的函数或聚合“ a.Quantity”,或者名称不明确

时间:2018-09-26 14:54:29

标签: sql-server sql-server-2016

USE [CompanyTest]
GO

SELECT 
    d.code, 
    SUM(a.ItemID - d.itemID) AS BalancePeriodId,
    -- NOTE PeriodID 0 for current need to add 1 for last year
    (SUM(a.Quantity (CASE WHEN b.TransactionTypeID = 15 THEN 1 ELSE 0 END)) + 
       SUM(a.Quantity (CASE WHEN b.TransactionTypeID = 16 THEN -1 ELSE 0 END))) AS QuantitySold,
    (SUM(a.Quantity  (Case when b.TransactionTypeID =17 then 1 Else 0 end )) +
    SUM(a.Quantity  (Case when b.TransactionTypeID =18 then -1 Else 0 end ))) AS QuanitityPurchased,
    (SUM(a.issuevalue  (Case when b.TransactionTypeID =15 then 1 Else 0 end )) +
sum (a.issuevalue  (Case when b.TransactionTypeID =16 then -1 Else 0 end ))) AS SalesValueSold,
    (SUM(a.CostValue  (Case when b.TransactionTypeID =15 then 1 Else 0 end ))+
     SUM(a.CostValue  (Case when b.TransactionTypeID =16 then -1 Else 0 end ))) AS CostValueSold,
    (SUM(a.CostValue  (Case when b.TransactionTypeID =17 then 1 Else 0 end ))+
SUM(a.issuevalue  (Case when b.TransactionTypeID =18 then -1 Else 0 end ))) AS ValuePurchased
FROM 
    dbo.TransactionHistory a
INNER JOIN 
    dbo.TransactionType b ON a.TransactionTypeID = b.TransactionTypeID 
                          AND a.TransactionTypeID IN (15, 16, 17, 18)
INNER JOIN 
    dbo.TransactionGroup c ON b.TransactionGroupID = c.TransactionGroupID
INNER JOIN 
    dbo.StockItem d ON a.ItemID = d.ItemID
WHERE 
    a.ItemID = d.ItemID 
    AND (a.TransactionDate = DATEADD (YEAR, -1, GETDATE())) 
    AND a.TransactionDate >'2018-03-31 00:00:00.000' 
GROUP BY
    d.Code

我一个月前创建了此脚本,以一种固定的格式提取数据,以供另一个脚本中使用,以重新导入到另一个表中。

它对我来说非常完美,但是现在我得到了模棱两可的错误,我什至不明白为什么!服务器上似乎没有任何更改。我确实更改了localadmin,但这又回到了原来的状态!

1 个答案:

答案 0 :(得分:0)

我建议您不要对列别名使用ab等随机字母。使用表缩写,例如TransactionType ttTransactionHistory th

按照书面规定,您的查询将完全不会运行。造成列错误的常见原因是列不合格。但是所有人都合格。另一方面,此表达式:

sum (a.Quantity  (Case when b.TransactionTypeID =15 then 1 Else 0 end ))

完全无效。表达式之间也许应该有一个*

我的猜测是,在移动代码提问时,您限定了一个或多个在原始查询中不合格的列名。