2017-08-05 20 views
1

異なる列と日付範囲で値を数える方法は知っていますが、両方を同時に行う必要はありません。日付範囲のある異なる列のSQLカウント値

DATE | Number1 | Number2 | Number3 | Number4 | Number5 | Number6 
2017-08-05 | 01 | 02 | 03 | 04 | 05 | 06 
2017-08-04 | 02 | 03 | 04 | 05 | 06 | 07 
2017-08-03 | 03 | 04 | 05 | 06 | 07 | 08 
2017-08-02 | 04 | 05 | 06 | 07 | 08 | 09 
2017-08-01 | 05 | 06 | 07 | 08 | 09 | 10 

を、今私が選びだしデータ範囲のため、このような結果が欲しい:

私は、この例の値を持つテーブルを持っている(例を2017年8月2日から2017年8月3日まで。):

Number | occurrences 
    03 |  1 
    04 |  2 
    05 |  2 
    06 |  2 
    07 |  2 
    08 |  2 
    09 |  1 

これをどのように1つのSQLクエリで行うのですか?

SELECT num, COUNT(*) AS Occurences 
FROM (
    SELECT date_col, Number1 AS num 
    FROM table_name 
    UNION ALL 
    SELECT date_col, Number2 
    FROM table_name 
    ... 
) AS sub 
-- WHERE date_col BETWEEN ... AND ... --specific range 
GROUP BY num 
ORDER BY num; 

はとにかく、あなたのスキーマ設計を再考する必要があります

+0

この種の問題は(ほとんど)常に貧弱な設計の兆候です – Strawberry

答えて

1

あなたはその後、通常GROUP BYサブクエリとを使用することができます。

関連する問題