现在要做一个表,可以显示页面被点击的次数。数据表的结构如下Click_ID, Page_Name, Language
1         aa         eng
2         bb         eng
3         aa         chn
4         cc         chn
5         cc         chn
6         cc         chn老板要的看的效果是页面名       中文       英文
aa           1          1
bb           0          1
cc           3          0aa,bb,cc等页面有很多,所以得用动态的生成。一行就显示出页面名,中文点击,英文点击,我打算用gridview做,但是写出不来这种效果。1.后台绑定sql语名如果是select * from xxx的话,出来所有的表里的页面名就会都出来,可我只是要唯一的一个就可以.这个要怎么是只显示唯一的一个页面?
  
2.如果 sql 是用 select page_Name,count(*) from xxx group by (page_name), 页面倒是唯一了,但只能统计点击的总数,可是中文和英文要怎么分别统计出来?3. 我原来是想用 select * from xxx 把所以的内容都读出来,然后再内存里操作,分类和累加,但不知道要怎么写好。

解决方案 »

  1.   

    select page_Name,Language,count(*) from xxx group by (page_name,Language), 这样就能得到页面名      语言      数量 
    aa          eng        3 
    aa          chn        2 
    bb          eng        4 
    bb          chn        5 读到datatable中, 再在内存里处理一下
      

  2.   

    你这个确实可以读成这种形式。页面名      语言      数量 
    aa          eng        3 
    aa          chn        2 
    bb          eng        4 
    bb          chn        5 但我就是不知道怎么去在内存里怎么操作来变成老板要求的形式页面名      中文      英文 
    aa          1          1 
    bb          0          1 
    cc          3          0 
      

  3.   

    Create table #b
    (
    Click_ID int,
    Page_Name varchar(50) ,
    [Language] varchar(50)
    )
    insert into #b
     select 1,'aa','eng'
    union all select 2,'bb','eng'
    union all select 3,'aa','eng'
    union all select 4,'cc','chn'
    union all select 5,'cc','chn'
    union all select 6,'cc','chn'delete #b
    select * from #b
    --页面名      中文      英文 
    --aa          1          1 
    --bb          0          1 
    --cc          3          0 
    select a.Page_Name as 页面名,Isnull(b.clickCount,0) as 中文,Isnull(c.clickCount,0)as 英文 from #b as a
    left join (select Count(*) as clickCount,Page_Name,[Language] from #b group by Page_Name,[Language]) b 
        on a.Page_Name=b.Page_Name and a.[Language]='chn'
    left join (select Count(*) as clickCount,Page_Name,[Language] from #b group by Page_Name,[Language]) c 
        on a.Page_Name=c.Page_Name and a.[Language]='eng'
    group by a.Page_Name,b.clickCount,c.clickCount
      

  4.   

    select a.Page_Name as 页面名,Isnull(b.clickCount,0) as 中文,Isnull(c.clickCount,0)as 英文 from #b as a
    left join (select Count(*) as clickCount,Page_Name,[Language] from #b group by Page_Name,[Language]) b 
        on a.Page_Name=b.Page_Name and a.[Language]='chn'
    left join (select Count(*) as clickCount,Page_Name,[Language] from #b group by Page_Name,[Language]) c 
        on a.Page_Name=c.Page_Name and a.[Language]='eng'
    group by a.Page_Name,b.clickCount,c.clickCount-----------------------
    页面名      中文      英文 
    aa 0 2
    bb 0 1
    cc 3 0
      

  5.   

    好多SQL牛逼的人啊。。我就是不怎么会SQL。郁闷。,学习了。。
      

  6.   

    请教,这个段SQL代码要放在哪里,放在数据库里?如果放在数据库里,要怎么调用?因为我这个不是三层结构,没DAL层。是.cs直接调用数据库表。
      

  7.   

    唉,SQL的调用不会啊,这种视图什么的,没接触过
      

  8.   

    两种方法都没测试过,你试试看能否可行
    方法1:select Page_Name,中文=0+case when Language=chn then 1 else 0 end,英文=0+case when Language=eng then 1 else 0 end from 表 group by Page_Name方法2select a.Page_Name,a.中文,b.英文 from (select Page_Name,count(*) as 中文 from 表  where Language=chn group by Page_Name) as a inner join (select Page_Name,count(*) as 英文 from 表  where Language=eng group by Page_Name) on a.Page_Name=b.Page_Name