我对TSql的帮助不大:)
SELECT TOP (100) PERCENT HSW, NAZWA, COUNT(HSW) AS TEST
FROM _Katalogi.dbo.ZBIOR_NAZW
WHERE hsw = '3768917680'
GROUP BY HSW, NAZWA
现在我得到了这个结果
3768917680 PODKŁADKA UTWARDŹ. 1
3768917680 ŚRUBA SAMOZABEZPIECZJĄCA 1
3768917680 PODKŁADKA 82
3768917680 PODKŁADKA 3/8" 1
3768917680 PODKŁADKA UTWARDZONA 2883
3768917680 ŚRUBA 2
现在在这个子查询中,我只需要
3768917680 PODKŁADKA UTWARDZONA 2883
我瘦我问有点不对
SELECT TOP (100) PERCENT HSW, NAZWA, COUNT(HSW) AS TEST
FROM _Katalogi.dbo.ZBIOR_NAZW
GROUP BY HSW, NAZWA
目标只是从HSW专栏的gropuing表中获得顶级NAZWA。就像你看到一点点我有一个HSW号码和许多名字,我只需要获得最流行的名字:)但在一个HSW组内。有许多hsw数字,有很多不同的名字,我只需要有TOP名称的HSW号码列表:)任何想法?
不同的aproach :) 表格中的数据
3768917680 PODKŁADKA UTWARDŹ.
3768917680 ŚRUBA SAMOZABEZPIECZJĄCA
3768917680 PODKŁADKA
3768917680 PODKŁADKA
3768917680 PODKŁADKA
3768917680 PODKŁADKA 3/8"
3768917680 PODKŁADKA UTWARDZONA
3768917680 ŚRUBA
3768917681 PODKŁADKA UTWARDŹ.
3768917681 PODKŁADKA UTWARDŹ.
3768917681 ŚRUBA SAMOZABEZPIECZJĄCA
3768917682 PODKŁADKA
3768917683 PODKŁADKA 3/8"
3768917684 PODKŁADKA UTWARDZONA
3768917684 ŚRUBA
3768917684 ŚRUBA
就像你看到这是在emess所以我只需要得到什么是goo所以组中最流行的名字
3768917680 PODKŁADKA
3768917681 PODKŁADKA UTWARDŹ.
3768917682 PODKŁADKA
3768917683 PODKŁADKA 3/8"
3768917684 ŚRUBA
所以目标采用顶级(最受欢迎)名称
的一个hsw数字答案 0 :(得分:3)
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY HSW ORDER BY CNT DESC) rn
, *
FROM (
SELECT COUNT(*) OVER (PARTITION BY HSW, NAZWA) as CNT
, *
FROM FROM _Katalogi.dbo.ZBIOR_NAZW
) as SubQuery1
) as SubQuery2
WHERE rn = 1 -- Only top CNT per HSW
答案 1 :(得分:2)
这样的东西?
SELECT HSW, NAZWA, COUNT(HSW) AS TEST
FROM _Katalogi.dbo.ZBIOR_NAZW
WHERE hsw = '3768917680'
GROUP BY HSW, NAZWA
HAVING COUNT(HSW) =
(
SELECT TOP 1 COUNT(HSW) AS TEST
FROM _Katalogi.dbo.ZBIOR_NAZW
WHERE hsw = '3768917680'
GROUP BY HSW, NAZWA
ORDER BY COUNT(HSW) DESC
)
答案 2 :(得分:0)
您还可以使用分析函数基于COUNT创建RowRank,如果存在平局,则会获取所有结果,并且效果良好。
如果您想要所有HSW的最佳结果,而不仅仅是列出的那个,您可以使用:
SELECT HSW, NAZWA, TEST
FROM (
SELECT HSW, NAZWA, COUNT(HSW) AS TEST, Rank() OVER (PARTITION BY HSW ORDER BY COUNT(HSW) DESC) as RowRank
FROM _Katalogi.dbo.ZBIOR_NAZW
GROUP BY HSW, NAZWA
)sub
WHERE RowRank = 1
演示:SQL Fiddle
如果你不想在平局的情况下获得多个结果,将RANK()更改为ROW_NUMBER(),那么每个HSW只会选择1。
编辑:缺少')'