我想将子类别映射到“多数”父类别。寻找这个例子:多数票TSQL
IF OBJECT_ID(N'tempdb..#Temp') IS NOT NULL DROP TABLE #Temp
CREATE TABLE #Temp
(
ID INT,
SubCategory NVARCHAR(100),
Category NVARCHAR(100)
)
INSERT INTO #Temp
SELECT 1, N'SC1', N'C1'
UNION
SELECT 2, N'SC1', N'C1'
UNION
SELECT 3, N'SC1', N'C1'
UNION
SELECT 4, N'SC1', N'C2'
UNION
SELECT 5, N'SC1', N'C2'
子类别SC1可以属于2“父”的类别:C1,C2,但C1所以它代表了大多数被分配更多的SC1大于C2。我目前使用相关子查询来映射阳光类别的多数家长产品分类如下:
IF OBJECT_ID(N'tempdb..#Temp') IS NOT NULL DROP TABLE #Temp
CREATE TABLE #Temp
(
ID INT,
SubCategory NVARCHAR(100),
Category NVARCHAR(100)
)
INSERT INTO #Temp
SELECT 1, N'SC1', N'C1'
UNION
SELECT 2, N'SC1', N'C1'
UNION
SELECT 3, N'SC1', N'C1'
UNION
SELECT 4, N'SC1', N'C2'
UNION
SELECT 5, N'SC1', N'C2'
SELECT
Id,
OuterQuery.SubCategory,
Category = (SELECT TOP 1 Category FROM #Temp AS InnerQuery
WHERE InnerQuery.SubCategory = OuterQuery.SubCategory
GROUP BY InnerQuery.SubCategory, InnerQuery.Category
ORDER BY COUNT(DISTINCT Id) DESC)
FROM #Temp AS OuterQuery
这是想实现我想要的正确方法是什么?
如果两个(或多个)类别对于一个子类别具有同样高的计数,会发生什么?查询应该返回两个(或更多)行吗?或者有某种形式的平局规则?或者是其他东西? –
知道有人会问( - :.在这种情况下,我不太可能出现这种情况,我只是选择第一个(TOP 1)。 – cs0815
为什么一个子类别可以多次在同一个类别中?其他的? –