数据表结构:
CREATE TABLE [dbo].[TGMDETAIL]([F_ID] [int] IDENTITY(1,1) NOT NULL,[F_TOPCODE] [varchar](50) NULL,[F_DEPNAME] [varchar](50) NULL,[F_SKY] [varchar](50) NULL,[F_ITEM] [varchar](50) NULL,[F_MONEY] [numeric](18, 2) NULL CONSTRAINT [DF_TGMDETAIL_F_MONEY]  DEFAULT (0),[F_DTIME] [datetime] NULL CONSTRAINT [DF_TGMDETAIL_F_DTIME]  DEFAULT (getdate()))即表为:
F_ID | F_TOPCODE | F_DEPNAME | F_SKY | F_ITEM | F_MONEY | F_DTIME |
--------------------------------------------------------------------
1    |10001      |A店        |张三   |现金    |10000.00 | 2011-8-2| 
2    |10001      |A店        |张三   |签单    |12000.00 | 2011-8-2| 
3    |10001      |A店        |张三   |烟款    |13000.00 | 2011-8-2| 
4    |10001      |A店        |张三   |假币    |15000.00 | 2011-8-2|
这个表的是记录着各个店的每天上班的每一个收款员的各项收款情况我现在想得到的是每天,各店的各个收款员的收款明细表及总额。如下
F_TOPCODE | F_DEPNAME | F_SKY | 现金 | 。。(所有项)。。 | 总金额
------------------------------------------------------------------- 
10001     |A店        | 张三  |。
10002     |B店        | 李四  |。
谢谢各位大侠。分有限,敬请包涵

解决方案 »

  1.   

    CREATE TABLE [dbo].[#TGMDETAIL]([F_ID] [int] IDENTITY(1,1) NOT NULL,[F_TOPCODE] [varchar](50) NULL,[F_DEPNAME] [varchar](50) NULL,[F_SKY] [varchar](50) NULL,[F_ITEM] [varchar](50) NULL,[F_MONEY] [numeric](18, 2) NULL CONSTRAINT [DF_TGMDETAIL_F_MONEY] DEFAULT (0),[F_DTIME] [datetime] NULL CONSTRAINT [DF_TGMDETAIL_F_DTIME] DEFAULT (getdate()))
    insert into #TGMDETAIL
    select 10001,'A店','张三' ,'现金 ',10000.00,' 2011-8-2' union all
    select 10001,'A店','张三' ,'签单 ',10000.00,' 2011-8-2' union all 
    select 10001,'A店','张三' ,'烟款 ',10000.00,' 2011-8-2' union all 
    select 10002,'A店','李四' ,'现金 ',10000.00,' 2011-8-2'  select * from(
    select * from #TGMDETAIL
    UNION ALL
    SELECT 0 AS F_ID,'' AS F_TOPCODE,'' AS F_DEPNAME,F_SKY,'总款',SUM(F_MONEY) AS F_MONEY,'' AS F_DITIME FROM #TGMDETAIL  group by F_SKY
    ) a order by F_SKY,F_MONEY,F_DTIME desc
      

  2.   

    说错了:是每个F_TOPCODE,每个收款员合并成一条数据,而不是每个F_SKY成一条。其它就是行列转换