9

私はtableA異なる値を持っています:

 data
------
 10
 15
 20
 40
 40000
 50000
 60000

また、そのデータに関する統計情報を取得する必要があります(1つのクエリで取得したい)。たとえば、次のようになります。

select count(data) from tableA where data < 100
union all
select count(data) from tableA  where data >= 100

その結果、私は受け取ります

(No column name)
----------------
4
3

しかし、次のように1行で結果を受け取りたいと思います。

Small | Big
---------
4     | 3 

どうやってするの?出来ますか?

4

4 に答える 4

11

次の代わりにサブクエリを試してくださいUNION ALL

SELECT
  (SELECT COUNT(data) FROM tableA WHERE data < 100) AS Small,
  (SELECT COUNT(data) FROM tableA WHERE data >= 100) AS Big

このSQLFiddleを参照してください

于 2012-09-18T05:13:01.977 に答える
11
select count(case when data < 100 then 1 end) as Small,
       count(case when data >= 100 then 1 end) as Big
from TableA

平均するとこんな感じになります。

select avg(case when data < 100 then data end) as Small,
       avg(case when data >= 100 then data end) as Big
from TableA
于 2012-09-18T05:16:28.477 に答える
6
DECLARE @tst TABLE (
   val INT

)

INSERT INTO @tst (val)
SELECT 10
UNION
SELEcT 15
UNION 
SELECT 20
UNION 
SELECT 40
UNION
SELECT 40000
UNION
SELECT 50000
UNION 
SELECT 60000

;WITH Smalls AS (
SELECT COUNT(val) Small FROM @tst WHERE val < 100 
), Bigs AS(
select count(val) Big from @tst where val >= 100
)
SELECT Small, Big
 FROM Smalls, Bigs
于 2012-09-18T05:15:02.893 に答える
0
create table datatable
(
  data int
)

insert into datatable values(10) 

insert into datatable values(15)

insert into datatable values(20)

insert into datatable values(40)

insert into datatable values(40000)

insert into datatable values(50000)

insert into datatable values(60000)



create table outputtable 
( 
  small int , 
  big int 
)

insert into outputtable 
(
  small,
  big
)

select (select count(data) from datatable where data<100),
       (select count(data) from datatable where data>=100)

select * from datatable

select * from outputtable
于 2012-09-18T09:38:52.387 に答える