在 SQL Server 中使用 group by 的列名总和?
Posted
技术标签:
【中文标题】在 SQL Server 中使用 group by 的列名总和?【英文标题】:sum of column name using group by in SQL server? 【发布时间】:2014-02-19 07:53:57 【问题描述】:ALTER PROCEDURE [dbo].[K_RT_GetProdutstogrid]
@purchasedby int
AS
BEGIN
SET NOCOUNT ON;
select PS.sno, PD.productname,sum(PS.quantity) as quantity,PS.modelno from K_RT_PurchaseDet PS
inner join K_RT_ProductDetails PD on PD.sno=PS.product
where purchasedby=@purchasedby and PS.quantity!=0 and attrited='false'
group by PD.productname,PS.modelno,PS.company,PS.sno
END
通过这个我得到了作为
sno product stock modelno
1 Computer 2 Dell
2 Mobile 3 Nokia7100
3 Mobile 2 Nokia7100
但实际上我想输出为
sno product stock modelno
1 Computer 2 Dell
2 Mobile 5 Nokia7100
我是这样写的,但我没有得到请帮助我....
【问题讨论】:
您真的希望sno
被错误地报告为 2 个诺基亚 7100s 吗?如果是这样,显示哪个sno
值是否重要?如果您实际上不需要sno
,那么解决方案很简单 - 请参阅下面的@Akshay 答案。
【参考方案1】:
只需在查询中编辑group by
子句。做到这一点
group by PD.productname,PS.modelno
【讨论】:
并从select
中删除PS.sno
,否则SQL Server 会报错。【参考方案2】:
查询:
SELECT MIN(PS.sno) AS sno,
PD.productname,
SUM(PS.quantity) as quantity,
PS.modelno
FROM K_RT_PurchaseDet PS
JOIN K_RT_ProductDetails PD on PD.sno=PS.product
WHERE purchasedby=@purchasedby
AND PS.quantity!=0 and attrited='false'
GROUP BY PD.productname,
PS.modelno,
PS.company
【讨论】:
以上是关于在 SQL Server 中使用 group by 的列名总和?的主要内容,如果未能解决你的问题,请参考以下文章
sqlserver2008,sql编程,group by 用法
sqlserver2008,sql编程,group by 用法
使用 MS SQL Server 中的 Group by 字段将垂直 sql 结果转换为水平输出
GROUP BY 中的 SQL Server 2014 LAST_VALUE