用于计算具有相似列的行的SQL查询

时间:2010-10-29 03:34:49

标签: sql

现在我有一个包含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 

3 个答案:

答案 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