我是一个MySQL新手,非常感谢我的专家提示。 我有以下数据集:
date UnitID CategoryID Quantity
2015-01-01 4 s 4
2015-01-01 5 s 6
2015-01-01 4 u 10
2015-01-01 5 u 20
2015-01-02 4 s 3
2015-01-02 5 s 1
2015-01-02 4 u 2
2015-01-02 5 u 32
2015-01-02 4 s 5
2015-01-02 4 s 5
我想将Date
,UnitID
和CategoryID
组合成不同密钥的值加起来(希望我的术语正确)。
即最后两行不是唯一的,因为第6行已经具有相同的date
+ UnitID
+ Category
,因此查询不会添加这些记录值(10)。
所需的输出是:
date UnitID CategoryID Quantity
2015-01-01 4 s 4
2015-01-01 4 u 10
2015-01-01 5 s 6
2015-01-01 5 u 20
2015-01-02 4 s 3
2015-01-02 4 u 2
2015-01-02 5 s 1
2015-01-02 5 u 32
答案 0 :(得分:-1)
declare @bob as table (
date datetime
,UnitID varchar(10)
,CategoryID varchar(10)
,Quantity int
)
insert @bob values('2015-01-01','4','s', 4 )
insert @bob values('2015-01-01','5','s', 6 )
insert @bob values('2015-01-01','4','u',10 )
insert @bob values('2015-01-01','5','u',20 )
insert @bob values('2015-01-02','4','s', 3 )
insert @bob values('2015-01-02','5','s', 1 )
insert @bob values('2015-01-02','4','u', 2 )
insert @bob values('2015-01-02','5','u',32 )
insert @bob values('2015-01-02','4','s', 5 )
insert @bob values('2015-01-02','4','s', 5 )
;with cte
AS
(
select
*
,row_number() OVER (PARTITION BY date, UnitID, CategoryID
ORDER BY date DESC) AS intRow
from @bob
--order by date, unitid, CategoryID
)
select
date
,UnitID
,CategoryID
from
cte
where
intRow = 1
答案 1 :(得分:-1)
你的措辞是这个
2015-01-02 4 s 3
应该是
2015-01-02 4 s 13
如果是这种情况,则查询只是
SELECT Date, UnitID, CategoryID, SUM(quantity)
FROM tbl
GROUP BY Date, UnitID, CategoryID;
“我想求和值......”不同意 “因此查询将不添加这些记录值(10)。” 上面的代码将添加它们。如果你没有添加它们,那么解释你想要的行值。