为了账号安全,请及时绑定邮箱和手机立即绑定

在线等:数据行列转换问题[

在线等:数据行列转换问题[

繁花如伊 2018-12-07 05:09:22
这是我从数据库中根据一定条件查询出的结果。collectdata typename collecttime120.00 收缩压上 2012/5/11 13:19:4590.00 舒张压下 2012/5/11 13:19:4634.00 血糖餐前 2012/5/11 13:19:4736.00 血糖餐后 2012/5/11 13:19:4837.50 体温 2012/5/11 13:19:49150.00 心率 2012/5/11 13:19:50180.00 收缩压上 2012/5/11 16:30:31110.00 舒张压下 2012/5/11 16:30:3233.00 血糖餐前 2012/5/11 16:30:3338.00 血糖餐后 2012/5/11 16:30:3439.00 体温 2012/5/11 16:30:35190.00 心率 2012/5/11 16:30:36最后想要的结果如下:120.00 90.00 34.00 36.00 37.50 150.00 13:19180.00 110.00 33.00 38.00 39.00 190.00 16:30求各位帮下忙了,先谢谢了。要求是不能在数据库中做对sql语句进行处理。    
查看完整描述

6 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

用下面的代码能实现:

SELECT TOP 1000 [id]
      ,max(case typename when '收缩压上' then collectdata else null end) as 收缩压上
      ,max(case typename when '舒张压下' then collectdata else null end) as 舒张压下
      ,max(case typename when '血糖餐前' then collectdata else null end) as 血糖餐前
      ,max(case typename when '血糖餐后' then collectdata else null end) as 血糖餐后
      ,max(case typename when '体温' then collectdata else null end) as 体温
      ,max(case typename when '心率' then collectdata else null end) as 心率
  FROM [sdlog].[dbo].[Table_1] group by id

这里,我增加了一个名为ID的字段,一行数据相同的ID,数据表的内容为:(没使用日期了,所以就没写)

id collectdata typename
1 120 收缩压上
1 90 舒张压下
1 34 血糖餐前
1 36 血糖餐后
1 38 体温
1 150 心率
2 180 收缩压上
2 110 舒张压下
2 33 血糖餐前
2 38 血糖餐后
2 39 体温
2 190 心率

 

查询后的结果为:

 

id 收缩压上 舒张压下 血糖餐前 血糖餐后 体温 心率
1 120 90 34 36 38 150
2 180 110 33 38 39 190

查看完整回答
反对 回复 2019-01-21
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

要求是不能在数据库中做对sql语句进行处理????

查看完整回答
反对 回复 2019-01-21
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

是的,从数据库中返回了一个DataSet。对这个进行处理

查看完整回答
反对 回复 2019-01-21
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

你生成dataset,然後,包含一個中間的列名。裏面放的數據是collecttime.subing(0,collecttime.length-2)的數據

然後用這個中間列進行分組,然後輸出分組內容。

查看完整回答
反对 回复 2019-01-21
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

不太会啊,能不能具体点呢。

查看完整回答
反对 回复 2019-01-21
?
aluckdog

TA贡献1847条经验 获得超7个赞

@Servers: 

        private static DataSet GetInidsPoseq()
        {

            DataSet ds = new DataSet();
            DataTable dt = new DataTable();
            dt.Columns.Add("PO_SEQ");
            dt.Columns.Add("CO_No");
            dt.Columns.Add("PC_To_Plan_Unit");
            dt.Columns.Add("Plant_Flag");
            dt.Columns.Add("PC_To_Plan_Unit");
            ds.Tables.Add(dt);
            return ds;

        }
            DataSet ds = GetInidsPoseq();
            DataTable dt = ds.Tables[0];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dt.Rows[i]["PO_SEQ"] = dt.Rows[i]["CO_No"].ToString().Substring(0, dt.Rows[i]["CO_No"].ToString().Length - 2);
            }
var re = from t in dt.AsEnumerable() group t by t.Field<string>("PO_SEQ") into s select new { s.Key, }; foreach (var item in re) { var m1 = from m in dt.AsEnumerable() where m.Field<string>("PO_SEQ") == item.Key select m; }


查看完整回答
反对 回复 2019-01-21
  • 6 回答
  • 0 关注
  • 431 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信