我正在使用SQL Server 2008。
我收到此错误:
在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
我想:
b
numberID
,我想执行SUM
并返回一行结果numberID
我想返回结果代码:
select distinct
b.*,
case
when b.NumberID = b.NumberID then SUM(d.Percentage)
end as Percentage,
NULL as LName,
NULL as FName,
'Percentage is' + convert(VARCHAR(20),
CASE WHEN b. NumberID = b.NumberID
THEN SUM(d.Percentage) END) as Case
from
Accounting b
join (
select b.*
from Accounting b
join (
select number
, MAX(id) id
from Accounting
where Date < '2012-12-01'
group by number
) a
on b.number = a.number
and b.Id = a.id
) b2
on b.number = b2.number
where b.Date > '2012-12-01'
group by b.NumberID
答案 0 :(得分:0)
在联接下的SELECT
中使用distinct。
//etc.
join
(
select DISTINCT b.* from
Accounting b
//etc.
答案 1 :(得分:0)
您的案例语法不正确。检查manual。 它应该是这样的:
CASE case_value
WHEN when_value
所以在你的情况下(jeje)
select distinct b.*,
case b.NumberID when b.NumberID then ...
确实很奇怪。 b.NumberID始终是b.NumberID:o
答案 2 :(得分:0)
SELECT b.NumberID, SUM(b.Percentage) AS Percentage,
(
SELECT MAX(s.id)
FROM Accounting s
WHERE s.Date < '2012-12-01' AND s.number = b.number
) AS MaxID
FROM Accounting b
WHERE b.Date > '2012-12-01'
GROUP BY b.NumberID
答案 3 :(得分:0)
您需要在Group By子句中包含select语句中的所有列。让我们说我有一张冰淇淋的餐桌和订购它们的人。我有数据说
如果我告诉sql按照冰淇淋的味道分组,我告诉它我只想要一行返回该味道。通过在我的选择中包含客户的名字,我要求sql订购每种口味。我怎样才能(在一排)展示谁订购了巧克力?为了向sql索取我想要的信息,我需要为每个顾客和每个冰淇淋口味排一行(也许玛丽昨天点了草莓)。所以,我需要顾客和冰淇淋的味道。
Agregate函数不需要在group by子句中,因为您向sql询问有关数据的特定问题。也许我想知道那个名字首先按字母顺序排列的人。然后,我可以通过冰淇淋口味选择最大(顾客)和组。
Select b.id, b.number, b.firmname, b.date, sum(...)
From
Group by b.id, b.number, b.firmname, b.date
注意: