2017-08-05 52 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 

,現在我想有這樣的choosen數據範圍的結果(例如,從2017年8月2日至2017年8月3日):

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

如何在一個SQL查詢中執行此操作?

+0

這種問題是(幾乎)總是不良設計的症狀 – Strawberry

回答

1

你可以使用子查詢,然後正常GROUP BY

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; 

反正你應該重新考慮你的架構設計。