Reputation:
I want to know how many distinct TRANSPORTNO for each months from table TRANSPORTARCHIVE. There is probably a better way to do this.
select COUNT(distinct TRANSPORTNO)
from TRANSPORTARCHIVE
where DATEASKED between '2015-01-01' and '2015-01-31'
select COUNT(distinct TRANSPORTNO)
from TRANSPORTARCHIVE
where DATEASKED between '2015-02-01' and '2015-02-28'
select COUNT(distinct TRANSPORTNO)
from TRANSPORTARCHIVE
where DATEASKED between '2015-03-01' and '2015-03-31'
and so on...
I want an output that show 12 columns with the number of distinct TRANSPORTNO for every month
Thanks
Upvotes: 0
Views: 78
Reputation: 279
Aleksey's answer is essentially correct, except you need to get rid of the WHERE clause.
SELECT
COUNT(distinct TRANSPORTNO) as cnt,
month(DATEASKED) as date_month
FROM TRANSPORTARCHIVE
GROUP BY month(DATEASKED);
Upvotes: 0
Reputation: 569
Try this one:
select
COUNT(distinct TRANSPORTNO) as cnt,
month(DATEASKED) as date_month
from TRANSPORTARCHIVE
group by month(DATEASKED)
where DATEASKED between '2015-01-01' and '2015-01-31';
Upvotes: 1
Reputation: 169274
You want to group by the month. Something like this in MySQL:
select
EXTRACT(year from DATEASKED)
, EXTRACT(month from DATEASKED)
, COUNT(distinct TRANSPORTNO)
from
TRANSPORTARCHIVE
where
DATEASKED between '2015-01-01' and '2015-03-31'
group by
1,2
If you're using SQL Server:
select
YEAR(DATEASKED)
, MONTH(DATEASKED)
, COUNT(distinct TRANSPORTNO)
from
TRANSPORTARCHIVE
where
DATEASKED between '2015-01-01' and '2015-03-31'
group by 1,2
Upvotes: 0