2

list というテーブルがあり、次のものを抽出する必要があります。フィールドは ID と日付です

  1. date<20120401 の場合、id をカウント >>>> 結果を返す
  2. date>20120401 の場合、id を当てにする >>>> 結果を返す

id番号xyzのdate<20120401が20件、date>20120401が30件ある場合

その後、結果は...

xyz 20 30

私は次のようにしました...

select 
 (select count(id) from list where id='xyz' and date<20120401) as date1,
 (select count(id) from list where id='xyz' and date>20120401) as date2;

結果は 20 30 です

しかし、ID番号を印刷する方法は?

4

4 に答える 4

2
SELECT
id,
SUM(CASE WHEN date < 20120401 THEN 1 ELSE 0 END) AS date1,
SUM(CASE WHEN date > 20120401 THEN 1 ELSE 0 END) AS date2,
FROM list
WHERE id = 'xyz'
GROUP BY id

アップデート:

SELECT
list.id,
idmaster.idlocation,
SUM(CASE WHEN list.date < 20120401 THEN 1 ELSE 0 END) AS date1,
SUM(CASE WHEN list.date > 20120401 THEN 1 ELSE 0 END) AS date2,
FROM list
INNER JOIN idmaster ON list.id = idmaster.idnumber
WHERE list.id = 'xyz'
GROUP BY id
于 2013-02-15T15:36:28.500 に答える
0

試す

select id, count(id) from list where id='xyz' and date < 20120401
union
select id, count(id) from list where id='xyz' and date > 20120401
于 2013-02-15T15:36:20.337 に答える
0

GROUP BYあなたは条項と多分このようなものを探しています:

SELECT
    l2.id,
    (SELECT COUNT(id)
    FROM list l1
    WHERE l1.id = l2.id AND date < 20120401) AS date1,
    (SELECT COUNT(id)
    FROM list l1
    WHERE l1.id = l2.id AND date > 20120401) AS date2
FROM
    list l2
GROUP BY
    l2.id

望ましい結果を得るためのより費用効果の高い方法がありますが、これは最も理解しやすい方法です。

于 2013-02-15T15:36:25.113 に答える
0

これを試して:

 SELECT
    id,
    SUM(CASE WHEN date < 20120401 
    THEN 1 ELSE 0 END) AS date1,
    SUM(CASE WHEN date > 20120401 
    THEN 1 ELSE 0 END) AS date2,
    FROM list
    WHERE id = 'xyz'
    GROUP BY id
于 2013-02-15T15:39:41.603 に答える