Sql countif和sumif每行不分组

Sql countif和sumif每行不分组,sql,sum,countif,Sql,Sum,Countif,我正在尝试使用SQL计算sumif和countif 以下是要开始的代码: 选择 项目ID 供应商 ,成本 ,售价 从countifExpirement开始 我正在尝试创建以下输出: 前四列已经有数据,我正在尝试创建计算字段来计算重复项目、每个供应商的项目和供应商的成本。 易于在excel中创建。使用分组方法的示例很多,但我需要每一行都显示出来。在标准SQL中,您可以使用分析函数来实现这一点。但是,它们并不是在每个DBMS中都可用 select itemid, supplier, cost

我正在尝试使用SQL计算sumif和countif

以下是要开始的代码: 选择
项目ID 供应商 ,成本 ,售价 从countifExpirement开始

我正在尝试创建以下输出:

前四列已经有数据,我正在尝试创建计算字段来计算重复项目、每个供应商的项目和供应商的成本。
易于在excel中创建。使用分组方法的示例很多,但我需要每一行都显示出来。

在标准SQL中,您可以使用分析函数来实现这一点。但是,它们并不是在每个DBMS中都可用

select 
  itemid, supplier, cost, saleprice, 
  count(*) over (partition by itemid) as count_itemid, 
  count(*) over (partition by supplier) as count_supplier, 
  sum(cost) over (partition by supplier) as cost_suppler
from countifexpirement;
以下与sub select相同,适用于每个DBMS:

select 
  itemid, supplier, cost, saleprice, 
  (
    select count(*) 
    from countifexpirement x 
    where x.itemid = countifexpirement.itemid
  ) as count_itemid, 
  (
    select count(*) 
    from countifexpirement x 
    where x.supplier = countifexpirement.supplier
  ) as count_supplier, 
  (
    select sum(cost)
    from countifexpirement x 
    where x.supplier = countifexpirement.supplier
  ) as cost_suppler
from countifexpirement;

你能举例说明你的预期结果是什么吗?你能分享一下你的表的定义吗?哪些数据库管理系统?如何获取count_ItemID?例如,为什么第一个itemID 10014的计数为2,而下一个10014的计数为3?只是固定了计数列。它应该是正确的results@Giorgi纳库里:是的,count_itemid的请求不清楚,这就是为什么我在评论部分要求解释。我假设结果图像中的输入错误和count_itemid应该只是按itemid统计记录,就像count_supplier按supplier统计记录一样。Op已经纠正了这个问题,所以这个答案似乎是正确的。