そのための設定に苦労しています。これが最初のテーブルのセットアップです。最初のクエリは、特定の日付 (2012 年 6 月 1 日など) を過ぎたアイテムにのみ適用する必要があります。
| Table: TIMELOG |
| INQUIRY_ID | … | LOGMINS | … | OPERID | … | EDATE |
| 2 | | 45 | | bob | | 2012-05-01 |
| 5 | | 3 | | richard | | 2012-06-02 |
| 5 | | 12 | | bob | | 2012-07-01 |
| 5 | | 15 | | paul | | 2012-07-01 |
| 6 | | 10 | | paul | | 2012-07-01 |
次にクエリは、INQUIRY_ID を使用して別のテーブルに移動し、いくつかの追加フィールドを取得する必要があります (この次のテーブルには、INQUIRY_ID ごとに 1 つのエントリしかありません。
| Table: INQUIRY |
| INQUIRY_ID | … | CATEGORY_ID | … | PROD_ID |
| 2 | | 45 | | 6 |
| 3 | | 3 | | 50 |
| 4 | | 12 | | 3 |
| 5 | | 15 | | 67 |
| 6 | | 10 | | 2 |
CATEGORY_ID と PROD_ID を取得したら、それらの「フレンドリ名」はそれぞれ別のテーブルにあります
| Table: CATEGORY |
| CATEGORY_ID | … | CATNAME |
| 45 | | Server |
| 3 | | Workstation |
| 12 | | Phones |
| 15 | | Backup |
| 10 | | Network |
| Table: PROD |
| PROD_ID | … | PRODDESC |
| 6 | | SBS 2003 |
| 50 | | Windows 7 |
| 3 | | iPhone |
| 67 | | Buexec |
| 2 | | SwitchF |
次に、LOGMINS フィールドを合計したいと思います。INQUIRY_ID ごとに複数の LOGMINS がある場合があることを念頭に置いて、次のように仕上げます。
| INQUIRY_ID | … | TOTAL | … | CATNAME | … | PRODDESC |
| 2 | | 45 | | Server | | SBS 2003 |
| 5 | | 30 | | Workstation | | Windows 7 |
| 6 | | 10 | | Phones | | iPhone |
膨大な量の詳細で申し訳ありません。私が試したクエリは爆破されただけです。ネストされたクエリと複数の結合を使用すると、SQL のスキルが爆発します。どんな助けでも大歓迎です。
現在実行中のクエリ:
select
timelog.INQUIRY_ID,
SUM (logmins) AS Total,
catname,
proddesc,
EDATE
from
timelog
inner join inquiry on timelog.inquiry_id=inquiry.inquiry_id
inner join category on inquiry.category_id = category.category_id
inner join prod on inquiry.prod_id = prod.prod_id
where EDATE > '2013-07-01'
group by
timelog.INQUIRY_ID,
catname,
proddesc,
edate
order by timelog.INQUIRY_ID desc