sqlserver计算行,sql计算列
SqlServer 2000 中如何快速获取表行数
嗨!这个跟很多条件有关的! 比如存储跨盘面造成缓慢
专注于为中小企业提供成都网站制作、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业下陆免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
--------------------------------------------------
不说废话,看SQL,你看那个好就用那个,99.9%的情况下是第二种快!
SET STATISTICS TIME on
select count(*) from dbo.Order_Detail where detail_ID is not null;
SET STATISTICS TIME off
SET STATISTICS TIME on
select rowcnt from dbo.sysindexes where id=object_id('Order_Detail') and indid=1
SET STATISTICS TIME off
----------------------------------------------------------
你的1000万,我的也不少!时间30ms,第二种 2ms
SQLServer每行的空间占用数应该如何计算
创建存储过程:
CREATE PROCEDURE [dbo].[sys_viewTableSpace]
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE [dbo].#tableinfo(
表名 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
记录数 [int] NULL,
预留空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
使用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
索引占用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
未用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
)
insert into #tableinfo(表名, 记录数, 预留空间, 使用空间, 索引占用空间, 未用空间)
exec sp_MSforeachtable "exec sp_spaceused '?'"
select * from #tableinfo
order by 记录数 desc
drop table #tableinfo
END
使用的时候直接 :exec sys_viewtablespace
sqlserver 如果某字段为空就计算为空的这行和下一行的时间差
DECLARE @lastDate DATE,@date DATE, @str nvarchar(30);
DECLARE c_test_main CURSOR FAST_FORWARD FOR
SELECT
baby.NICKNAME,-- 这个就是字符串
baby.CREATE_DATE -- 这个就是创建的时间
FROM T_BABY baby
-- 打开游标.
OPEN c_test_main;
--填充数据.
FETCH NEXT FROM c_test_main INTO @str, @date;
set @lastDate = null;
--假如检索到了数据,才处理.
WHILE @@fetch_status = 0
BEGIN
IF @lastDate IS NOT NULL
begin
print(DateDiff(minute,@lastDate,@date));
set @lastDate = null;
continue;
END
IF @str = ''
begin
set @lastDate = @date;
end
else
begin
set @lastDate = null;
end
FETCH NEXT FROM c_test_main INTO @str, @date; -- 游标至下一个
END;
-- 关闭游标
CLOSE c_test_main;
--释放游标.
DEALLOCATE c_test_main;
中间一些信息什么的替换替换就可以用,我这个只是单行单行的打印出来的,若你想返回一个结果集的话自己改一改就行。相信楼主修改修改还是没问题的。
关于SqlServer数据库行求和的问题
create Table T
(
id int,
a int,
b int
)
Insert into t values(1,1,1)
Insert into t values(2,2,1)
Insert into t values(3,3,1)
Insert into t values(4,4,1)
Insert into t values(5,5,1)
Insert into t values(6,6,1)
/*思路:
id可能不连续,所以先用id排序,产生一个记录号id2
然后按3条记录一组产生一个分组号G,接着按G分组求和,id取最大
最后更新
*/
With CT
AS
(
Select max(id) As id,SUM(a) As A,SUM(B) As B
from
(
Select *,(id2+2)/3 As G
from (Select *,ROW_NUMBER() over(order by id) As id2 from T) S
)M Group by G
)
Update T Set a=CT.A-T.a,b=CT.B-T.b
From CT
where T.id=CT.id
文章标题:sqlserver计算行,sql计算列
网页链接:http://cdiso.cn/article/dsgphhc.html