查询计数

时间:2013-09-23 10:21:33

标签: sql sql-server count

我的查询有问题。我使用T-SQL。

我写了这个查询:

SELECT  COUNT(*),
        MR.IDEsercizioRiabilitativo
FROM    AA_V_MONITOR_RisultatiEserciziR MR
        INNER JOIN AA_V_TER_TerapieRiabilitative TT
            ON MR.IDTerapia = TT.ID
WHERE   MR.IDEsercizioRiabilitativo IN ( 9, 10, 14 )
        AND TT.CodiceFiscaleAssistito IN ('RICCARDINOFUFFOL')
        AND MR.DATAESECUZIONE >= '2012-01-01'
        AND MR.DataEsecuzione <= '2013-12-12'
GROUP   BY MR.IDEsercizioRiabilitativo

我有这个结果:

count(*)    IdEsercizioRiabilitativo
2            10
1            11
1            14

这个结果没关系,但我想要行数。我想检索IDESERCIZIORIABILITATIVO的数量。

我想计算IdEsercizioRiabilitativo的数量。

在样本中,我应该检索一个数字3。

IdEsercizioRiabilitativo 10,11,14。有三种截然不同的IdEsercizioRiabilitativo

我不使用Java,C ++或其他,但我开发了StoreProceedure

所以我在

中修改了我的查询
SELECT count()
FROM (
    SELECT COUNT()
        ,MR.IDEsercizioRiabilitativo
    FROM AA_V_MONITOR_RisultatiEserciziR MR
    INNER JOIN AA_V_TER_TerapieRiabilitative TT ON MR.IDTerapia = TT.ID
    WHERE MR.IDEsercizioRiabilitativo IN (
            9
            ,10
            ,14
            )
        AND TT.CodiceFiscaleAssistito IN ('RICCARDINOFUFFOL')
        AND MR.DATAESECUZIONE >= '2012-01-01'
        AND MR.DataEsecuzione <= '2013-12-12'
    GROUP BY MR.IDEsercizioRiabilitativo
    )

但我有这个回应

  

Msg 102,Level 15,State 1,Line 8 Sintassi non correttainprossimità   di')'。

你能帮助我吗?

感谢所有

4 个答案:

答案 0 :(得分:1)

使用@@ ROWCOUNT属性知道从查询中检索的行数。

如果您使用的是Java JDBC API,那么您将拥有resultSet.last()和resultSet.getRowNum()。这两种方法受到jdbc驱动程序和底层数据库的支持

答案 1 :(得分:0)

如果您使用其他COUNT()

,该怎么办?
  

从((SELECT COUNT(*),MR.IDEsercizioRiabilitativo FROM FOO)中选择count( * )作为derivedTable)

当然,您必须更改derivedTable请求,或者只是执行其他请求并使用DISTINCT子句。

答案 2 :(得分:0)

试试这个:

SELECT count(*)
FROM (
    SELECT COUNT(*) as TOT
        ,MR.IDEsercizioRiabilitativo
    FROM AA_V_MONITOR_RisultatiEserciziR MR
    INNER JOIN AA_V_TER_TerapieRiabilitative TT ON MR.IDTerapia = TT.ID
    WHERE MR.IDEsercizioRiabilitativo IN (
            9
            ,10
            ,14
            )
        AND TT.CodiceFiscaleAssistito IN ('RICCARDINOFUFFOL')
        AND MR.DATAESECUZIONE >= '2012-01-01'
        AND MR.DataEsecuzione <= '2013-12-12'
    GROUP BY MR.IDEsercizioRiabilitativo
    ) temp

答案 3 :(得分:0)

我认为这可能更简单:

SELECT  COUNT(DISTINCT MR.IDEsercizioRiabilitativo)
FROM    AA_V_MONITOR_RisultatiEserciziR MR
        INNER JOIN AA_V_TER_TerapieRiabilitative TT
            ON MR.IDTerapia = TT.ID
WHERE   MR.IDEsercizioRiabilitativo IN ( 9, 10, 14 )
        AND TT.CodiceFiscaleAssistito IN ('RICCARDINOFUFFOL')
        AND MR.DATAESECUZIONE >= '2012-01-01'
        AND MR.DataEsecuzione <= '2013-12-12'