如何在一个sql中为每个唯一参数获取行和获取计数行?

时间:2013-09-25 14:38:24

标签: sql sql-server sql-server-2008

上帝的日子。

我使用MsSQl Server 2008;

代码:

$entersql="SELECT name
FROM (
SELECT name FROM 
Hist_answer
WHERE id_city='$id_city' AND id_firm='$id_firm' AND id_service='$id_service'
) x
GROUP BY name
";

$enterres = sqlsrv_query($conn, $entersql, $params, $options);

while($i = sqlsrv_fetch_array($enterres, SQLSRV_FETCH_ASSOC))
{

if($inputby=='id_hist_answer'&&$typeby=='DESC'){$a--;}else{$a++;}

$name=($i['name']!='')? $i['name']:'0';

$sql11="SELECT 
ha.unit as ha_unit,
ha.id_producer_goods as ha_id_producer_goods
FROM Hist_answer ha
WHERE ha.id_city='$id_city' AND ha.id_firm='$id_firm' AND ha.id_service='$id_service' AND ha.name='$name'";

$params = array();
$options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$res11 = sqlsrv_query($conn, $sql11,$params,$options);

$row_count_ha = sqlsrv_num_rows($res11);

}

在这段代码中我做了:

1)我选择了所有唯一的namegroup by name);

2)在第二个sql($ sql11)中,我找到每个name的计数行。

请告诉我,当我能找到所有唯一的namegroup by name)并计算每个唯一name的行数时,我该怎么做? < / em>的

2 个答案:

答案 0 :(得分:2)

您可以在一个声明中获得唯一名称及其计数:

SELECT  name, count(name) AS records 
FROM    Hist_answer
WHERE   id_city='$id_city' 
    AND id_firm='$id_firm' 
    AND id_service='$id_service'
GROUP BY name

答案 1 :(得分:0)

SELECT  colname, count(colname) AS UniqueRecord_Count 
FROM    ascouser
GROUP BY colname

您可以列出您想要计算的列名,可以按照您的说法将Where子句用于过滤记录。