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,但这又回到了原来的状态!
答案 0 :(得分:0)
我建议您不要对列别名使用a
,b
等随机字母。使用表缩写,例如TransactionType tt
和TransactionHistory th
。
按照书面规定,您的查询将完全不会运行。造成列错误的常见原因是列不合格。但是所有人都合格。另一方面,此表达式:
sum (a.Quantity (Case when b.TransactionTypeID =15 then 1 Else 0 end ))
完全无效。表达式之间也许应该有一个*
。
我的猜测是,在移动代码提问时,您限定了一个或多个在原始查询中不合格的列名。