zoukankan      html  css  js  c++  java
  • 报表格式,去除重复的记录

    从数据库里查出的结果如下
      名称 大小 价格 厂家
      电视机 12 1200 海尔
      电视机 10 1000 长虹
      电视机 15 1500 康佳
      冰箱 12 1200 海尔
      冰箱 10 1200 康佳
      冰柜 100 2000 康佳
    最后显示的结果要这样的:
      电视机
      12 1200 海尔
      10 1000 长虹
      15 1500 康佳
      冰箱
      12 1200 海尔
      10 1200 康佳
      冰柜
      100 2000 康佳

    代码
    if object_id('tempdb.dbo.#') is not null drop table #
    create table #(名称 varchar(8), 大小 int, 价格 int, 厂家 varchar(8))
    insert into #
    select '电视机', 12, 1200, '海尔' union all
    select '电视机', 10, 1000, '长虹' union all
    select '电视机', 15, 1500, '康佳' union all
    select '冰箱', 12, 1200, '海尔' union all
    select '冰箱', 10, 1200, '康佳' union all
    select '冰柜', 100, 2000, '康佳'

    ;
    with t1 as
    (
    select id=dense_rank()over(order by 名称),* from #
    ),
    t2
    as
    (
    select distinct id, 0a, 名称 大小, ''价格,''厂家 from t1
    union all
    select id, 1, ltrim(大小), ltrim(价格), ltrim(厂家) from t1
    )
    select 大小, 价格, 厂家 from t2 order by id,a
    /*
    大小 价格 厂家
    ------------ ------------ --------
    冰柜
    100 2000 康佳
    冰箱
    12 1200 海尔
    10 1200 康佳
    电视机
    12 1200 海尔
    10 1000 长虹
    15 1500 康佳
    */

    ;
    with cte as
    (
    select id=row_number()over(order by getdate()), * from #
    )
    select 名称 = case id when (select min(id) from cte where 名称=t.名称) then 名称 else '' end, 大小, 价格, 厂家 from cte as t

    /*
    名称 大小 价格 厂家
    -------- ----------- ----------- --------
    电视机 12 1200 海尔
    10 1000 长虹
    15 1500 康佳
    冰箱 12 1200 海尔
    10 1200 康佳
    冰柜 100 2000 康佳
    */

  • 相关阅读:
    攻防世界新手RE 6.getit
    攻防世界新手RE 5.logmein
    攻防世界新手RE 4.simple-unpack
    攻防世界新手RE 3.open-source
    攻防世界新手RE 2.Hello, CTF
    {DARK CTF }Misc/Minetest1 2 3
    {DARK CTF } forensics /Wolfie's Contact
    {DARK CTF } OSINT/Dark Social Web
    2021 1 13 js笔记5 end,JSON学习笔记
    2021 1 12 js笔记4
  • 原文地址:https://www.cnblogs.com/gaolonglong/p/1833984.html
Copyright © 2011-2022 走看看