我写了一个SQL查询,为每月的列ipAdress
和ID
创建前10位。结果是正确的,但我需要另一种格式的结果。SQL - 列前10位
你能帮我找到正确的格式吗?
我的SQL查询
SELECT
MyMonth,
ipAddress,
ID ,
Records
FROM
(
SELECT
MyMonth ,
ipAddress,
ID,
Records,
ROW_NUMBER() OVER(PARTITION BY MyMonth ORDER BY so.Records DESC) AS RowNum
FROM
(
SELECT
LEFT(DATENAME(month,startDate),3) + ' ''' + RIGHT(YEAR(startDate),2) AS MyMonth
,ipAddress, ID ,COUNT(1) AS Records
FROM
[TEST_AUSWERTUNG].[dbo].[Evaluation]
GROUP BY
LEFT(DATENAME(month,startDate),3) + ' ''' + RIGHT(YEAR(startDate),2) ,ipAddress, ID
)so
)x
WHERE x.RowNum < 11
,其结果是例如
Aug'14 145.998.111.115 14 191481 Aug '14 145.998.991.145 E1 81448 Aug '14 11.14.48.11 P4 44544 Aug '14 145.998.49.149 U4 95814 Aug '14 11.4.949.49 CD 94941 Aug '14 11.4.949.45 XT 99449 Aug '14 11.4.949.45 CD 91188 Aug '14 145.998.49.54 XT 91994 Aug '14 11.4.949.49 XT 91954 Aug '14 145.998.49.44 BM 91444 Jun '14 145.998.111.115 14 118494 Jun '14 145.998.991.145 E1 49915 Jun '14 11.14.48.11 P4 41114 Jun '14 145.998.49.159 XB 49414 Jun '14 145.998.49.149 U4 94449 Jun '14 145.998.49.199 XB 94148 Jun '14 11.4.949.49 CD 99154 Jun '14 11.4.949.45 XT 99154 Jun '14 145.998.49.44 XT 91449 Jun '14 145.998.49.54 XT 91554
但我需要这样的:
Aug'14 145.998.111.115 14 191481 Jun '14 145.998.111.115 14 118494 Aug '14 145.998.991.145 E1 81448 Jun '14 145.998.991.145 E1 49915 Aug '14 11.14.48.11 P4 44544 Jun '14 11.14.48.11 P4 41114 Aug '14 145.998.49.149 U4 95814 Jun '14 145.998.49.159 XB 49414 Aug '14 11.4.949.49 CD 94941 Jun '14 145.998.49.149 U4 94449 Aug '14 11.4.949.45 XT 99449 Jun '14 145.998.49.199 XB 94148 Aug '14 11.4.949.45 CD 91188 Jun '14 11.4.949.49 CD 99154 Aug '14 145.998.49.54 XT 91994 Jun '14 11.4.949.49 CD 99154 Aug '14 11.4.949.49 XT 91954 Jun '14 11.4.949.45 XT 99154 Aug '14 145.998.49.44 BM 91444 Jun '14 145.998.49.44 XT 91449
任何人有一个解决方案?
在'RowNum'上将'Aug'子集和'Jun'子集合在一起。或者按照'RowNum'的方式分组。有很多关于你可以在这个网站搜索的关键点的答案。 – 2014-10-17 08:18:21