0

我有一个查询问题。我使用 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 corretta in prossimità di ')'。

你可以帮助我?

谢谢大家

4

4 回答 4

1

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

如果您使用的是 Java JDBC api.. 那么您有 resultSet.last() 和 resultSet.getRowNum()。这两种方式都受jdbc驱动和底层数据库的支持

于 2013-09-23T10:30:18.217 回答
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
于 2013-09-23T10:46:39.757 回答
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'
于 2013-09-23T12:17:07.940 回答
0

如果您使用其他 COUNT() 怎么办

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

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

于 2013-09-23T10:30:10.343 回答