时间和编号相同:
ID STCD TM Z Q 1 S1 2009-08-10 08:00:00 12 null
2 S1 2009-08-10 08:00:00 null 25
输出为
ID STCD TM Z Q
1 S1 2009-08-10 08:00:00 12 25
ID STCD TM Z Q 1 S1 2009-08-10 08:00:00 12 null
2 S1 2009-08-10 08:00:00 null 25
输出为
ID STCD TM Z Q
1 S1 2009-08-10 08:00:00 12 25
from tb
group by ID,STCD,TM
from tb
group by STCD,TM
回答个没分的问题 哎。--> 测试数据:@tb
declare @tb table([ID] int,[STCD] varchar(2),[TM] datetime,[Z] int,[Q] int)
insert @tb
select 1,'S1','2009-08-10 08:00:00',12,null union all
select 2,'S1','2009-08-10 08:00:00',null,25select min(ID), STCD, TM , sum( Z ) Z, sum( Q ) Q
from @tb
group by STCD, TM/*
STCD TM Z Q
----------- ---- ----------------------- ----------- -----------
1 S1 2009-08-10 08:00:00.000 12 25
(1 行受影响)*/
我不知道我的表设计的是不是有问题,一张大表(5、6列),但插入的值是一个值一个值插入的,显示的时候又需要合成一行,这样的话,就造成的好多字段为null,不知道这样会造成什么影响?浪费了磁盘空间?硬盘也不值钱
影响检索速度?null不知道会不会影响
我想设计成ID STCD TM TYPE DATA用TYPE来区分是哪种类型的数据,但将来显示的时候,还需要行列转置,一样会影响效率还有没有更好的处理办法?
如果Z和Q是非int型的,就要用case了。
而且需要你把需求说清楚!
又要取什么样的结果,去的时候都是取得合并好的结果?没有取不是合并的结果
因为每个测站有5个指标,按5个指标为5列来建表,但采集的时候,指标是分开采集的,一次发送5个包的数据,依次insert进入数据库,没有update功能,所以这样的话,就形成一条记录只能有一个字段值,造成了其他字段为nullZ、Q都为decimal类型,2位小数type为类型标识,如为1表示是Z,为2表示Q,为3表示F,为4表示CL。。这样虽然好处理,但显示的时候,我的Z\Q\F\CL又是一行来显示,就会出现行列转置的问题
这两种方法都有优缺点
我想请问,还有没有更好的处理办法