Sql 执行SUM,并在

Sql 执行SUM,并在,sql,Sql,我正在使用SQLServer2008 我得到这个错误: 在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中 我想: 从表b中选择所有列 当有相同的numberrid时,我希望执行SUM并返回一行结果 另外,如果只有一个数字,我想返回结果 我想再创建一个列案例,使用列百分比中的以下输出“Percentage is…”值 迄今为止的代码: select distinct b.*, case when b.NumberID = b.NumberID then

我正在使用SQLServer2008

我得到这个错误:

在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中

我想:

从表b中选择所有列 当有相同的numberrid时,我希望执行SUM并返回一行结果 另外,如果只有一个数字,我想返回结果 我想再创建一个列案例,使用列百分比中的以下输出“Percentage is…”值 迄今为止的代码:

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
在“连接”下的“选择”中也使用distinct

//etc.
join 
(
select DISTINCT b.* from 
  Accounting b
//etc.

您的案例语法不正确。检查一下。 应该是这样的:

CASE case_value
    WHEN when_value
你的情况是jeje

select distinct b.*, 
case b.NumberID when  b.NumberID then ...

这的确很奇怪。b、 NumberID始终是b.NumberID:o

您需要GROUPBY子句中包含的select语句中的所有列。比如说,我有一桌冰激凌和点冰激凌的人。我有数据显示

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    
乔点了巧克力 凯蒂点了草莓 玛丽点了巧克力 如果我告诉sql按冰淇淋口味分组,我是在告诉它,我只希望为该口味返回一行。通过在我的选择中包含客户的名字,我询问sql谁订购了每种口味。我怎样才能在一排显示谁点了巧克力?为了向sql查询我想要的信息,我需要为每位客户和每种口味的冰淇淋排一行,可能是Mary昨天点的草莓。所以,我需要根据顾客和冰淇淋口味进行分组

Select b.id, b.number, b.firmname, b.date, sum(...)
From 
Group by b.id, b.number, b.firmname, b.date
Agregate函数不需要位于GROUPBY子句中,因为您正在向sql询问有关数据的特定问题。也许我想知道那个名字按字母顺序排在第一位的人。然后,我可以根据冰淇淋的口味来选择maxcustomer和group

Select b.id, b.number, b.firmname, b.date, sum(...)
From 
Group by b.id, b.number, b.firmname, b.date
注:

只要命名所有列,就仍然可以使用b.*语法 在您的小组中 select中不再需要distinct关键字,因为 GROUPBY做的基本相同
您使用的聚合函数没有GROUPBY子句?我会非常小心地在单个语句中对不同的表重复使用相同的表别名b。使用单独的别名——同样,我建议使用更有意义的别名——比如会计表中的a或Acc……我用b.NumberID为group进行了更改。还是不行d.百分比从哪里来?我没有看到别名为d的表。这应该是b.百分比吗?你需要将b.*中的所有字段都包含在组中或集合中…@Tom Jerry,我的回答会不会无误运行?它会让你接近你想要的吗?