
正文
SqlServer中的行转列,sqlserver行列转换方法
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
SQL行变列统计怎么写,高手救我啊~
1、首先告诉你,现在数据是关系型的,不可能直接由行变成列。不过有些问题不是直接找答案,而是可以通过转问题来找答案,一般形式是:Select addedtime,sum(quantity) from product group by convert(char(7),addedtime,121) order by addedtime (这是SQLServer的语法,如果是其它数据库请更改相关语言。
2、有个思路:在系统表中找出表名对应的列名,并把每个列名都加上SUM()select sum(+name+), from syscolumnswhere id=(select id from sysobjects where name=表名)把查询结果复制出来,前面加select 后面加 from 表名。。你懂的注意:复制出来后把最后一个逗号去掉。
3、先建立一个取某列值的函数(getcol):输入商品编号,返回该编号对应的销售单号。
相关问答
Q1: 怎么把SQLServer里边的表在WINFORM的dataGridView里横过来,菜鸟求高手...
1、首先,要查数据库整行数据,就不能用ExecuteScalar,需要使用ExecuteReader活着干脆使用DataSet,都是可以的。
2、dataset,你会用吗?会用:datagridview.datasource=getds.table[0];就可以了。不会那很新建下面的方法吧。
3、你可以定义一个类,这个类里面就是你的字段内容,然后用Group来分组遍历,组成新的数据源就可以了。类似的伪代码。
4、设一个全局的Dictory,Key是列名,value是任意(null可能快一点儿)。在DataGridView的RowsAdded事件中用Dictory中的key取出每行的每个cell的值,如果cell中有数据,就将该key从Dictory中移除。继续判断下一行。注意RowsAdded事件一次可能有多条数据,对于很大的表的绑定,可能多次调用该事件。
Q2: sqlserver怎么行转列?
1、首先告诉你,现在数据是关系型的,不可能直接由行变成列。不过有些问题不是直接找答案,而是可以通过转问题来找答案,一般形式是:Select addedtime,sum(quantity) from product group by convert(char(7),addedtime,121) order by addedtime (这是SQLServer的语法,如果是其它数据库请更改相关语言。
2、select t.* from t_rule_rebate t where (merchantId IS null OR t.merchantid = #{merchantId} )AND (ztbz IS null OR trim(t.ztbz) = #{ztbz})AND (type IS null OR trim(t.type) = #{type}) 传进去的参数就不要在SQL中做处理了。。参数在传之前处理。
3、读取Sql里面的数据,添加到数据集,数据表 遍历数据表行的数据,添加到dataGridViewColumns.Add 列中去 再遍历数据表中列名,添加到dataGridViewRows.Add 行 其实这样处理不是很好。
4、很显然 行转 列。在sqlserver 中可以实现的。
Q3: sqlserver日期行转列的问题
1、首先点击顶部菜单中的“新查询”,打开一个SQL输入窗口。选择CONVERT(varchar(100),GETDATE(),23)。选择CONVERT(varchar(100),GETDATE(),23)。选择CONVERT(varchar(100),GETDATE(),8)将当前时间格式化为[hour:minute:second]。选择CONVERT(varchar(100),GETDATE(),20)。
2、select floor(datediff(mi,(select min(f_time) from a),optime)/10) ten,f_time,f_val from a into #tj where not a is null order by f_time --对#tj按ten列分组统计,同时显示每组的起始日期好截止日期。
3、读取Sql里面的数据,添加到数据集,数据表 遍历数据表行的数据,添加到dataGridViewColumns.Add 列中去 再遍历数据表中列名,添加到dataGridViewRows.Add 行 其实这样处理不是很好。
4、这是数据库的两表关联,在“利用SQL Server ”数据库建立数据库,建立两表的结构,输入数据,然后利用数据库连接查询即可。
Q4: sqlserver将一行数据转为一列显示,怎么实现
select t.* from t_rule_rebate t where (merchantId IS null OR t.merchantid = #{merchantId} )AND (ztbz IS null OR trim(t.ztbz) = #{ztbz})AND (type IS null OR trim(t.type) = #{type}) 传进去的参数就不要在SQL中做处理了。。参数在传之前处理。
这个不能用视图完成,因为视图是基本固定的结构,应该用存储过程,网上搜一下行列转换存储过程另外,数据都是在程序中使用,在程序中写代码反而更方便,比存储过程还好用,快,方便 。如果你硬要一个视图,我试写一下把 tb改成你的表名吧。
通用的办法是用动态sql解决:declare @sql varchar(2000);set @sql=select ;select @sql=@sql+列名+, from 表名;select @sql=left(@sql,len(@sql)-1)+exec(@sql);此外,SQL Server2005以上版本可以用XML Path解决。
如果确定只有两条数据的话,一条join语句加上子查询就OK 了 如果不确定几条 那一条sql 实现不了。 可以写个函数或者存储过程。 用一个游标拼接下 很简单。 在数据量不大的情况下 不大影响效率 也很灵活 。
表结构都不一样了?要是数据比较少呢,你可以试试手动修改你的表,表结构不一样就需要uodate了。
SqlServer中的行转列的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于sqlserver行列转换方法、SqlServer中的行转列的信息别忘了在本站进行查找喔。







