首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

行转列,但不施用聚合

2013-06-19 
行转列,但不使用聚合本帖最后由 blue_morning 于 2013-06-04 20:04:26 编辑pivot 做行转列时,要求一个聚合

行转列,但不使用聚合
本帖最后由 blue_morning 于 2013-06-04 20:04:26 编辑 pivot 做行转列时,要求一个聚合函数,但我不想聚合只是行转列。下面是我已经准备好的SQL:


CREATE TABLE [dbo].[ZTest](
[ID] [uniqueidentifier] NOT NULL ,
[WatchObjID] [int] NOT NULL,
[SensorID] [int] NOT NULL,
[CollectDateTime] [datetime] NOT NULL,
[WatchValue] [numeric](20, 4) NULL
) ON [PRIMARY]

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{01454A37-5E65-4929-BAF7-60BE6D588515}', 5, 1, '2013-06-03 14:59:42', 4.1100
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{02FBB8E8-CDC2-4EAB-8866-70D9FF6D42A3}', 5, 2, '2013-06-03 14:59:42', 4.2200
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{DDCF40D7-05CA-456E-8980-BFE28E801499}', 5, 3, '2013-06-03 14:59:42', 4.3300
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{F38006A6-8934-49C1-BB6C-BEF9CAA3A25E}', 5, 4, '2013-06-03 14:59:42', 4.4400
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{B87E08A0-BF71-485F-84F9-EA41FBDC1314}', 5, 5, '2013-06-03 14:59:42', 4.5500
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{93AFCF38-B7A9-4711-9BA2-CB28354D6310}', 5, 1, '2013-06-03 14:59:45', 3.1000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{EBE9BAD1-381B-4916-AA05-30681942361D}', 5, 2, '2013-06-03 14:59:45', 3.2000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{1C660463-2D1F-45A7-A4F9-60870E2EACC3}', 5, 3, '2013-06-03 14:59:45', 3.3000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{CA71B2EF-1CE6-4683-8904-72DA67A890B0}', 5, 4, '2013-06-03 14:59:45', 3.4000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{FEFB320E-F37C-4EE4-8D6A-E770EEEC8E79}', 5, 5, '2013-06-03 14:59:45', 3.5000


  )



  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{3F8D0DD8-6308-4F7D-97E4-BE6936C29E0F}', 3, 1, '2013-06-03 15:00:05', 1.1000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{06AD768D-7804-4E07-9DB6-F83E828F6074}', 3, 2, '2013-06-03 15:00:05', 1.2000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{ECA74E2A-AB09-40A4-9E2A-6579F2C60231}', 3, 3, '2013-06-03 15:00:05', 1.3000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{364C2476-124D-49B5-B090-58C9AEC190E0}', 3, 4, '2013-06-03 15:00:05', 1.4000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{9A221E39-4558-456E-899D-52D0444C6283}', 3, 5, '2013-06-03 15:00:05', 1.5000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{A8F09D0A-0249-438C-AF2D-7437773C8A2E}', 3, 1, '2013-06-03 14:59:56', 2.1000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{2EE2B9E8-0318-4E1B-9A9C-7BADD952A299}', 3, 2, '2013-06-03 14:59:56', 2.2000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{FF4F26A8-C482-48C1-80CE-1EEA224E544D}', 3, 3, '2013-06-03 14:59:56', 2.3000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{57BC227A-1F3F-48BC-A23C-CE4CA49EA496}', 3, 4, '2013-06-03 14:59:56', 2.4000
  )

  insert into ZTest(
    ID, WatchObjID, SensorID, CollectDateTime, WatchValue
  )
  values(
    '{22670494-E0C9-4001-BC87-31950F303E54}', 3, 5, '2013-06-03 14:59:56', 2.5000
  )

select * from zTest
drop table  zTest



我想得到的表结构如下:
WathchObjID, CollectDateTime, SensorID_1, SensorID_2, SensorID_3, SensorID_4, SensorID_5

谢谢


[解决办法]
try this,


select WatchObjID,CollectDateTime,
       [1] 'SensorID_1',
       [2] 'SensorID_2',
       [3] 'SensorID_3',
       [4] 'SensorID_4',
       [5] 'SensorID_5'
 from (select WatchObjID,CollectDateTime,SensorID,WatchValue from zTest) a
 pivot(max(WatchValue) for SensorID in([1],[2],[3],[4],[5])) p

/*
WatchObjID  CollectDateTime         SensorID_1                              SensorID_2                              SensorID_3                              SensorID_4                              SensorID_5
----------- ----------------------- --------------------------------------- --------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
5           2013-06-03 14:59:42.000 4.1100                                  4.2200                                  4.3300                                  4.4400                                  4.5500
5           2013-06-03 14:59:45.000 3.1000                                  3.2000                                  3.3000                                  3.4000                                  3.5000
3           2013-06-03 14:59:56.000 2.1000                                  2.2000                                  2.3000                                  2.4000                                  2.5000


3           2013-06-03 15:00:05.000 1.1000                                  1.2000                                  1.3000                                  1.4000                                  1.5000

(4 row(s) affected)
*/

热点排行
Bad Request.