Reputation: 21
i have a problem with a query. I use T-SQL.
I have write this query:
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
i have this result:
count(*) IdEsercizioRiabilitativo
2 10
1 11
1 14
This result it's ok but i would like the number of row. I would like to retrieve the number of IDESERCIZIORIABILITATIVO.
I would like to count the number of IdEsercizioRiabilitativo.
In the sample i should to retrieve a number 3.
IdEsercizioRiabilitativo 10,11,14. There are three distinct IdEsercizioRiabilitativo
I don't use a Java,C++ or other but i develop a StoreProceedure
so i have modify my query in
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
)
but i have this response
Msg 102, Level 15, State 1, Line 8 Sintassi non corretta in prossimità di ')'.
You can help me?
Thanks to all
Upvotes: 0
Views: 109
Reputation: 7763
I think this might be simpler:
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'
Upvotes: 0
Reputation: 30993
Try this:
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
Upvotes: 0
Reputation: 4030
Use @@ROWCOUNT attribute to know what is the number of rows retrieved from the query.
If you are using Java JDBC api.. then you have resultSet.last() and resultSet.getRowNum(). These two methods are subjected to support by jdbc drivers and underlying database
Upvotes: 1
Reputation: 47
What if you use an other COUNT()
select count(*) from ((SELECT COUNT(*),MR.IDEsercizioRiabilitativo FROM FOO) as derivedTable)
Of course you have to change the derivedTable request, or just do another request and use a DISTINCT clause.
Upvotes: 0