这里是我想获得: -如何使用一个t-sql语句获取计数和值?
SELECT
Column1,
Count(Column1),
Count(Column2)
FROM Table1
我知道这个查询是无效的。但是有什么办法可以使Column1的所有值和Column1的Count和Column2的Count的值相等。
这里是我想获得: -如何使用一个t-sql语句获取计数和值?
SELECT
Column1,
Count(Column1),
Count(Column2)
FROM Table1
我知道这个查询是无效的。但是有什么办法可以使Column1的所有值和Column1的Count和Column2的Count的值相等。
OVER子句修改汇总范围,允许查询发生,只要你想
SELECT
Column1,
Count(Column1) OVER(),
Count(Column2) OVER()
FROM Table1
编辑:
上面的SQL Server 2005+
编辑2:
SQL Server 2000中的CROSS JOIN/COUNT解决方案在加载时不可靠。
从多个连接试试这个,注意@@ ROWCOUNT从来没有在连接2
--connection 1
set nocount on;
drop table dbo.test_table;
GO
create table dbo.test_table
(
id_field uniqueidentifier not null default(newid()),
filler char(2000) not null default('a')
);
GO
create unique clustered index idx_id_fld on dbo.test_table(id_field);
GO
while 1 = 1
insert into dbo.test_table default values;
--connection 2
select T2.cnt, T1.id_field, T1.filler
from dbo.test_table T1
cross join (select COUNT(*) as cnt from dbo.test_table) T2
SELECT @@ROWCOUNT
select T2.cnt, T1.id_field, T1.filler
from dbo.test_table T1
cross join (select COUNT(*) as cnt from dbo.test_table) T2
SELECT @@ROWCOUNT
select T2.cnt, T1.id_field, T1.filler
from dbo.test_table T1
cross join (select COUNT(*) as cnt from dbo.test_table) T2
SELECT @@ROWCOUNT
EDIT3等于T2.cnt:cyberkiwi规定的测试是错误的。垃圾。
如果你忘记了@@ ROWCOUNT,你可以看到cnt
是在SSMS“网格模式”行数
现在不同了,你用SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
,它并给出正确的结果,但如果你是够忙得到不一致的结果你真的想运行这个吗?
使用临时表,以确保一致的数据集,如果你正在运行SQL Server 2000
尝试:
SELECT column1,(SELECT COUNT(Column1),COUNT(Column2)) AS CNT FROM Table1
这应该得到你想要的东西,那么当你运行你的取得命令你像你一样使用它。
E.g.在php中, $rows = mysql_fetch_assoc(mysql_query($query)); echo $rows['CNT'];
问题,如问,没有意义。你的意思是你想要Col1和Col2的值的个别组合的计数?如果是这样的:
select column1,column2,count(*)
from table1
group by column1, column2
如果这不是你想要的请尝试给出一些示例数据,输入可能是什么样子,你的期望的输出会是什么。
这是版本相关的,对吧? – 2011-01-25 19:01:54
@nathan gonzalez:是的,SQL Server 2005 + – gbn 2011-01-25 19:03:53