2017-06-27 55 views
1

私のSQLコードに何が間違っているかわかりません。私はスカラー変数@ tempMile2を宣言する必要があると言いますが、それは宣言されたテーブルです。SQL - スカラー変数エラーを宣言しなければなりません

INSERT INTO @tempMile (UserFullName, USERs_ID, timecard_date, timecard_createddate) 
SELECT UserFullName, USERs_ID, timecard_date, timecard_createddate 
FROM v_tblTimeCard 
WHERE convert(date, TimeCard_CreatedDate) = dateadd(day,-1, cast(getdate() as date)) 
group by 
userfullname, 
USERs_ID, 
timecard_date, 
TimeCard_CreatedDate 

DECLARE @tempMile2 table (USERs_ID int, timecard_date date) 
INSERT INTO @tempMile2 (USERs_ID, timecard_date) 
SELECT USERs_ID, timecard_date --add count logic here --timecard entries 1 for day 
FROM @tempMile 
group by USERs_ID, timecard_date 

select * from dbo.tblMileage left join 
@tempMile2 on tblMileage.Users_ID = @tempMile2.USERs_ID AND tblMileage.DateOfService = @tempMile2.timecard_date 
where @tempMile2.TimeCard_Date IS NOT NULL 

これは、@ tempMile2が宣言を要求している最後のselect文にのみ存在します。 考えていますか?

+2

使用しているデータベースで質問にタグを付けてください。 –

答えて

1

表変数を使用して列名を修飾することはできません。テーブルエイリアスは@で開始できません。だから、これを試してみてください。もちろん

select * 
from dbo.tblMileage m left join 
    @tempMile2 tm 
    on m.Users_ID = tm.USERs_ID and m.DateOfService = tm.timecard_date 
where tm.TimeCard_Date IS NOT NULL; 

where句のあなたの比較はjoinは、外側には参加しない、内部結合であることを意味しますが、私はその変更をしませんでした。

+0

ありがとうございます。私はこれでプレイしようとしていましたが、テーブル変数の1つでしかやっていませんでした。ありがとうございました! –

関連する問題