私はデータベースへのアクセスのみを選択しました。このクエリは、1年全体の結果(1行)を取得します。ストアドプロシージャを使用せずに異なる日付範囲(別のテーブルから取得)に対してsqlでクエリを複数回実行するには?
SELECT
COUNT(U.ssnnoncumhrs) as [Non Cums Hrs]
FROM
(SELECT TOP 100 PERCENT
(CASE
WHEN (([Social Security Number (SSN)] = LEAD([Social Security Number (SSN)], 1, 0) OVER (ORDER BY [Social Security Number (SSN)], sequencedate DESC, [YTD Productive Hours] DESC, [YTD Uncapped gross FUTA Wages] DESC))
AND ([YTD Productive Hours] < LEAD([YTD Productive Hours], 1, 0) OVER (ORDER BY [Social Security Number (SSN)], sequencedate DESC, [YTD Productive Hours] DESC, [YTD Uncapped gross FUTA Wages] DESC)))
THEN [Social Security Number (SSN)]
END) as ssnnoncumhrs
FROM
dbo.staging P, dbo.tblBatch T
WHERE
P.BatchId = T.BatchId
AND P.FileId = T.FileId
AND sequencedate >= '1/1/2016'
AND sequencedate <='12/31/2016'
ORDER BY
[Social Security Number (SSN)], sequencedate DESC,
[YTD Productive Hours] DESC, [YTD Uncapped gross FUTA Wages] DESC) as U
代わりに、このクエリを異なる日付範囲で実行する必要があります。
dbo.tblbatch
には日付のリストがあります。このクエリーは、1番目と2番目の日付の間、2番目と3番目の日付の間など、リスト内のすべての日付をカバーするまで実行する必要があり、毎回fromとtoの日付を手動で変更したかのようにすべての結果を返します。このような
働くだろう。 SSNは決してプレーンテキストに保存されるべきではありません...これまでの...期間。それらの列名はちょうどひどいです。スペースやその他の句読点は、列名やオブジェクト名には対応していません。また、ANSI-92スタイルの結合を使用する必要があります。これは25年以上前からあります。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx –
しかし、最大の問題は、それはまったく明らかではないということですあなたがここでやろうとしていること。これは始めるのに最適な場所です。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
あなたは 'SP'を必要としないループを利用することができます。 – Joby