Sql server 2008 如何检索char列的最大发生率值
我在获取列的最大发生率时遇到问题Sql server 2008 如何检索char列的最大发生率值,sql-server-2008,Sql Server 2008,我在获取列的最大发生率时遇到问题 matnum uom amount ------------------------------------- 1234 EA 10 1234 CS 10 1234 EA 20 1235 CS 10 1235 CS 20 我的输出选择应该是 matnum uom SUM(amount) ------------------------------------- 1234 EA (beca
matnum uom amount
-------------------------------------
1234 EA 10
1234 CS 10
1234 EA 20
1235 CS 10
1235 CS 20
我的输出选择应该是
matnum uom SUM(amount)
-------------------------------------
1234 EA (because EA occured Twice) 40
1235 CS 30
请提供一个select查询以获得所需的结果我在这里假设了一些关于您想要的东西,但是:
select matnum,
uom,
SUM(amount) as sum_amount
from your_table
group by matnum, uom
SELECT A.matnum, B.uom, C.s AS [SUM(amount)]
FROM yourtable A
INNER JOIN (
SELECT matnum, uom,
ROW_NUMBER() OVER (PARTITION BY matnum ORDER BY COUNT(*) DESC) AS rnm
FROM yourtable
GROUP BY matnum, uom
) B ON A.matnum = B.matnum AND B.rnm = 1
INNER JOIN (
SELECT matnum, SUM(amount) AS s
FROM yourtable
GROUP BY matnum
) C ON A.matnum = C.matnum
GROUP BY A.matnum, B.uom, C.s
1234的正确值是多少,应该是40还是30?如果EA发生了两次,那么总数似乎是30,但你表明你想要40?你的标题说的是最大值,但所需的输出可能是总和-你指的是最大值还是总和?正如@Bluefeet所说,它们不是循环总数,我猜uom和SUMamount没有关系。SUMamount似乎是matnum中所有行的总和,uom似乎是最常见的值。当然不清楚。
SELECT A.matnum, B.uom, C.s AS [SUM(amount)]
FROM yourtable A
INNER JOIN (
SELECT matnum, uom,
ROW_NUMBER() OVER (PARTITION BY matnum ORDER BY COUNT(*) DESC) AS rnm
FROM yourtable
GROUP BY matnum, uom
) B ON A.matnum = B.matnum AND B.rnm = 1
INNER JOIN (
SELECT matnum, SUM(amount) AS s
FROM yourtable
GROUP BY matnum
) C ON A.matnum = C.matnum
GROUP BY A.matnum, B.uom, C.s