過濾

2012-07-17 62 views
0

我的示例表中的數據是:

Table Data過濾

和我的SQL查詢:

SELECT 
Distinct 
    CASE CHARINDEX('?', SessionURL) 
     WHEN 0 THEN SessionURL 
     ELSE LEFT(SessionURL, CHARINDEX('?', SessionURL) - 1) END AS VisitPage, count(*) as [VisitTime] 
FROM SessionTracker 
group by SessionURL 
order by [VisitTime] desc 

查詢成功地運行,並與出查詢string.Means返回一個值從上述結果數據是:

result
但我只想要的格式結果:

Default 
Modules 

是否有可能在sql查詢中使用這種類型的過濾器。如果是,建議一種方式。謝謝。

回答

0

是的。與篩選查詢字符串的方式相同,請篩選/和。你需要SUBSTRING功能。要查找/的最後一次出現,請使用REVERSE函數。

即。

select pagename, COUNT(*) 
from 
(
    select 
     reverse(case CHARINDEX('/', withoutsuf) when 0 then withoutsuf 
     else LEFT(withoutsuf,CHARINDEX('/', withoutsuf)-1) end) as pagename 
    from 
    (
     select 
      substring(withoutq, CHARINDEX('.', withoutq)+1, LEN(withoutq)) withoutsuf 
     from 
     (
      select 
       REVERSE(
        CASE CHARINDEX('?', SessionURL) 
        WHEN 0 THEN SessionURL 
        ELSE LEFT(SessionURL, CHARINDEX('?', SessionURL) - 1) END) as withoutq 
      from SessionTracker 
     ) v 
    ) v 
) v 
group by pagename 
0

試試這個

declare @Path varchar(500)='http://somename/some_name.aspx' 
SELECT replace(substring(@Path,len(@Path)- 
CHARINDEX('/',REVERSE(@Path))+2,len(@Path)),'.aspx','') 
0
declare @t table(path varchar(100)) 
insert into @t (path) 
select 'http://localhost:58588/default.aspx' union all 
select 'http://localhost:58588/default.aspx' union all 
select 'http://localhost:58588/super-user/modules.aspx' 

select 
    distinct replace(right(path,charindex('/',reverse(path))-1),'.aspx','') 
from 
    @t