|
database
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Q: complex SELECT statementID STATUS 1 1 2 1 3 2 4 3 Can I do this: SELECT COUNT(STATUS = 1), COUNT(STATUS = 2), COUNT(STATUS = 3) FROM MyTable or I have to execute select for each status: SELECT COUNT(ID) FROM MyTable WHERE STATUS = 1 SELECT COUNT(ID) FROM MyTable WHERE STATUS = 2 SELECT COUNT(ID) FROM MyTable WHERE STATUS = 3 and to have three queries? Petar Popara wrote:
Have table with data: Show quote > How about this:> ID STATUS > 1 1 > 2 1 > 3 2 > 4 3 > > Can I do this: > > SELECT COUNT(STATUS = 1), COUNT(STATUS = 2), COUNT(STATUS = 3) FROM > MyTable > > or I have to execute select for each status: > > SELECT COUNT(ID) FROM MyTable WHERE STATUS = 1 > SELECT COUNT(ID) FROM MyTable WHERE STATUS = 2 > SELECT COUNT(ID) FROM MyTable WHERE STATUS = 3 > > and to have three queries? select sum(case when status = 1 then 1 else 0 end) as Count1, sum(case when status = 2 then 1 else 0 end) as Count2, sum(case when status = 3 then 1 else 0 end) as Count3 from table -- HTH, Stijn Verrept. Some other options:
--instead SELECT COUNT(ID),Status FROM MyTable GROUP BY STATUS --OR SELECT COUNT(STATUS = 1), COUNT(STATUS = 2), COUNT(STATUS = 3) FROM MyTable --instad SELECT SUM(CASE WHEN STATUS = 1 THEN 1 ELSE 0 END) AS STATUS_1, SUM(CASE WHEN STATUS = 2 THEN 1 ELSE 0 END) AS STATUS_2 SUM(CASE WHEN STATUS = 3 THEN 1 ELSE 0 END) AS STATUS_3 FROM MyTable HTH, Jens Suessmeyer. >SELECT COUNT(STATUS = 1), COUNT(STATUS = 2), COUNT(STATUS = 3) FROM This is incorrect syntax.>MyTable My personal favorite is SELECT COUNT(CASE WHEN STATUS = 1 THEN 'CountMe' END) AS STATUS_1, COUNT(CASE WHEN STATUS = 2 THEN 'CountMe' END) AS STATUS_2 COUNT(CASE WHEN STATUS = 3 THEN 'CountMe' END) AS STATUS_3 FROM MyTable Show quote "Jens" <J***@sqlserver2005.de> wrote in message news:1132825984.327184.151280@g14g2000cwa.googlegroups.com... > Some other options: > > > --instead > > SELECT COUNT(ID),Status FROM MyTable > GROUP BY STATUS > > --OR > > SELECT COUNT(STATUS = 1), COUNT(STATUS = 2), COUNT(STATUS = 3) FROM > MyTable > > --instad > > SELECT SUM(CASE WHEN STATUS = 1 THEN 1 ELSE 0 END) AS STATUS_1, > SUM(CASE WHEN STATUS = 2 THEN 1 ELSE 0 END) AS STATUS_2 > SUM(CASE WHEN STATUS = 3 THEN 1 ELSE 0 END) AS STATUS_3 > FROM MyTable > > > HTH, Jens Suessmeyer. > Jens skrev:
> Thats why I wrote "instead" between the examples :-) I must admit I also got confused by your 'instead' and 'OR' :)> > -Jens. /impslayer, aka Birger Johansson |
|||||||||||||||||||||||