SSMS (SQL Server Management Studio) の使用 - 2012
この SQL クエリの作成を完了するのを手伝ってください。
最初のテーブルSites
Client,Market,Project,SiteNumber
grum , lad , aaa , 12345
gla , daa , h11 , 56789
セカンドテーブルSitesStatus
SiteNumber,StatusName,Date(DateTime),ByUser
12345 , sta1 , 8/7/13 15:33:22, hec
12345 , sta1 , 8/7/13 15:43:22, hec
12345 , sta2 , 8/7/13 15:53:22, hec
12345 , sta2 , 8/7/13 16:03:22, hec
12345 , sta2 , 8/7/13 16:13:22, hec
56789 , sta1 , 8/7/13 15:22:22, hec
56789 , sta2 , 8/7/13 15:32:22, hec
望ましい結果
Client,Market,Project,TotalSites, sta1 ,TotStatTime, sta2 ,TotStat2Time,ByUser
Grum , lad , aaa , 5 , 2 , 10 , 3 , 20 , hec
gla , daa , h11 , 2 , 1 , inprogress, 1 , inprogress , hec
sitenumber
テーブル 1の日付に対応するテーブル 2 の日付列のすべての行の時間を表示する必要がinprogress
ありますが、計算する数値が見つからない場合は、結果の列/行にも を配置する必要があります。(これが不可能な場合は、コードでこれを行うこともできます。)また、出勤時間はあるが退勤時間がない場合のように、値はあるが「最後の値」がまだない場合があります。
すべてのステータスは既知であり、変更されないことに注意してください。(したがって、この例では X が 2 である X の量のステータスしかないことがわかっています。)
私がこれまでに試したこと:
select
Client,
Market,
ProjectType,
count(*) as Total,
sum(case when StatusName = 'sta1' then 1 else 0 end) as 'sta1',
sum(case when StatusName = 'sta2' then 1 else 0 end) as 'sta2'
--Here is where I'd like to add the Time adding for the joined table2
from
Sites s
INNER JOIN SitesStatus ss
on s.sitenumber = ss.SiteNumber
where
(StatusName in (
'sta1',
'sta2',
)
)
group by
Client,
Market,
ProjectType
@アンディM編集:
私が言うところ-ここで、上記の結合されたテーブル2に追加する時間を追加したい場所です。サイト番号とステータスの一致を指定して、列の日付(DateTime)のすべての行を追加するロジックを知りたいです
したがって、12345 には 2 つの sta1 エントリがあり、 1つは開始エントリ、 2は加算/減算して最初のエントリから時間を取得する
12345 には 3 つの sta2 エントリもあり、時間を取得するために最初のエントリから最後のエントリを加算/減算します。
56789 には 1 つの sta1 と 1 つの sta2 があります。終了値がないため、コードに (--) または (inProgress) を表示したいと思います....
もうクリア?