今は本当に古いAccess 97プログラムを.NETに変換しています。いくつかのものは、ポート、他のもの、あまりそうではありません。今はレポートのクエリを変換しています。同じselectステートメントでサブクエリで作成されたカラムを参照する
DECLARE @CLIENT as varchar(16) = 'ClientsName'
DECLARE @StartDate as date = '2016-02-01'
DECLARE @EndDate as date = '2016-02-29'
SELECT DISTINCT NewHirePostProcessed.LOCATION,
(SELECT COUNT(*) FROM NewHireList WHERE [email protected] AND NewHireList.DOHIRE > @StartDate AND NewHireList.DOHIRE < @EndDate AND NewHirePostProcessed.LOCATION = LOCATION) AS NumberHired,
(SELECT COUNT(*) FROM NewHireList WHERE [email protected] AND NewHireList.DOHIRE > @StartDate AND NewHireList.DOHIRE < @EndDate AND NewHirePostProcessed.LOCATION = LOCATION AND CONTROL IS NOT NULL AND Qualify <> 'U') AS NumberReferred,
(NumberReferred/NumberHired) AS PercentRefered
FROM (SELECT * FROM NewHireList WHERE NewHireList.CLIENT = @CLIENT AND NewHireList.DOHIRE > @StartDate AND NewHireList.DOHIRE < @EndDate) AS NewHirePostProcessed;
テーブルの他の列を参照する数学部分に問題があります。
(NumberReferred/NumberHired) AS PercentRefered
この列が存在しないというエラーが表示されます。
SQL Error (207) Invalid column name 'NumberQualified'
Invalid column name 'NumberReferred'
これは、以前のものを動作させたAccessの癖の1つと推測しています。これを回避する簡単な方法はありますか?それは、すべての数学の部分でサブクエリをやり直す必要はありませんか?
共通テーブル式を使用して変数を宣言するにはどうすればよいでしょうか?基本的なクエリがひどいので、ここでさらに単純化します。 – Kayot
あなたはそれらをcteの前に宣言し、他のクエリと同様にcte jastの中でそれらを使うことができます。 –
HeidiSQLはセグメントでコマンドを送信していました。バッチでそれを行うように設定したら、正しく動作しました。 – Kayot