现在我有一个包含4列的表格,如下所示
seq col1 col2 col3
1 1 2 3
1 1 2 4
2 1 2 3
3 1 2 4
结果应如下
具有(col1 col2 col3)相同的seq1的数量 对于上面的例子,输出预期为
count(seq) col1 col2 col3
2 1 2 3
2 1 2 4
答案 0 :(得分:4)
相信,这就是你所需要的......
Select Count(seq) as countseq, col1, col2, col3 from <Table>
group by col1, col2, col3
或者,如果您在表2中有要比较的列,那么
Select A.col1, A.col2, A.col3, count(B.Seq) from
<Table2> as A inner join <Table> as B
on A.Col1 = B.Col1 and A.Col2=B.Col2 and A.Col3 = B.Col3
group by A.Col1, A.Col2, A.col3
答案 1 :(得分:0)
通常,当您想要比较相似的行时,您需要选择这些列作为结果并为它们构建校验和,或者以某种形式选择那些行(连接或散列)并将临时表连接到自身并选择在剩余的行上设置结果。
您的问题没有足够的信息来提供更完整的答案。
答案 2 :(得分:0)
我想你要比较col1,col2和col3并选择seq的数量。我连接了col1,col2和col3的值。我将这些列转换为varchar,然后用' - '替换空值。我想这应该有所帮助。
Select seq,
ISNULL(Cast(col1 as Varchar(5)),'-')+ISNULL(Cast(col2 as Varchar(5)),'-')+ISNULL(Cast(col3 as Varchar(5)),'-') as tempcol
into #temp from Table
Select Count(seq) from #temp group by tempcol