T-SQLの共通テーブル式で開始日と終了日のパラメータを使用しようとしています。私は非常にSQL Serverの開発に新しいですし、私はクエリで紛失しているのか分からない。SQL Server CTEの日付パラメータを使用
@startdate
& @enddate
の値を指定して正しい結果を得ることができます。
しかし、ユーザーが開始日と終了日の値を指定できるように、2つのパラメータを開く方法を理解しようとしています。クエリはSSRSレポートで使用されます。
DECLARE @startdate Datetime,
@enddate Datetime;
SET @startdate = '2017-02-09';
SET @enddate = '2017-02-10';
WITH ManHours AS
(
SELECT DISTINCT
a.plant_name AS Plant, SUM(tc.total_hr) AS TotalHours
FROM
area AS a
INNER JOIN
tf_department AS dep ON a.plant_id = dep.plant_id
INNER JOIN
tf_timecard AS tc ON dep.department_id = tc.department_id
WHERE
tc.timecard_dt BETWEEN @startdate AND @enddate
AND tc.department_id IN (266, 453, ...endlessly long list of IDs......)
AND tc.hourtype_id = 1
GROUP BY
a.plant_name),
Tonnage AS
(
SELECT DISTINCT
a.plant_name AS Plant, SUM(tglt.postqty) AS TotalTonnage
FROM
area AS a
INNER JOIN
plantgl AS pgl ON a.plant_id = pgl.plant_id
INNER JOIN
tgltransaction AS tglt ON pgl.glacckey = tglt.glacctkey
WHERE
tglt.postdate BETWEEN @startdate AND @enddate
GROUP BY
a.plant_name
)
SELECT DISTINCT
ManHours.Plant,
SUM(TotalTonnage) as 'Production Tons' ,
SUM(TotalHours) as 'Man Hours',
TotalTonnage/TotalHours AS TonsPerManHour
FROM
ManHours
LEFT OUTER JOIN
Tonnage ON ManHours.Plant = tonnage.Plant
GROUP BY
ManHours.Plant, ManHours.TotalHours, Tonnage.TotalTonnage
このクエリはストアドプロシージャでラップしてください – TheGameiswar
DECLAREおよびSETステートメントを削除することができます。残りのクエリをSSRSのデータセットに入れると、2つのパラメータが自動的に作成されます。パラメータをDATE型に変更するだけで、クエリを実行する前に日付を入力するように求められます。 –