に関する場合に格納手続き
-
13-09-2019 - |
質問
以下のようなクエリ。
declare @Prm_CourseId int
declare @Prm_SpecializationId int
set @Prm_CourseId=5
set @Prm_SpecializationId=0
declare @WhrStr varchar(500)
set @WhrStr = case @Prm_CourseId
when 0 then
'e.CourseId is null or e.CourseId is not null'
when -1 then
'e.CourseId is null or e.CourseId is not null'
when isnull(@Prm_CourseId,0) then
'e.CourseId is null or e.CourseId is not null'
else
'e.CourseId= '+Convert(varchar,@Prm_CourseId)
end
set @WhrStr = case @Prm_SpecializationId
when 0 then
'e.SpecializationId is null or e.SpecializationId is not null'
when -1 then
'e.SpecializationId is null or e.SpecializationId is not null'
when isnull(@Prm_SpecializationId,0) then
'e.SpecializationId is null or e.SpecializationId is not null'
else
'e.SpecializationId= '+Convert(varchar,@ Prm_SpecializationId)
end
print @WhrStr
exec(
'select f.EnquiryID,
e.[Name],
f.AttendedBy,
f.Remarks,
f.CreatedDate
from STD_FollowUp f
inner join
STD_Enquiry e
on f.EnquiryId=e.EnquiryId
where'+' '+@WhrStr
)
この問題はしていただきたいと思い結果に1、2の場合書@WhrStr.ものの価値にWhrStrはe.SpecializationIdがnullの場合はe.SpecializationIdがnullでない場合に用いると1日の上に上書きされます。直しとかは出来ないんですか追加をします。
解決
if (isnull(@Prm_CourseId, 0) = 0 or isnull(@Prm_CourseID, 0) = -1)
set @Prm_CourseId = null
if (isnull(@Prm_SpecializationId, 0) = 0 or isnull(@Prm_SpecializationId, 0) = -1)
set @Prm_SpecializationId = null
select f.EnquiryID,
e.[Name],
f.AttendedBy,
f.Remarks,
f.CreatedDate
from STD_FollowUp f
inner join
STD_Enquiry e
on f.EnquiryId=e.EnquiryId
where (@Prm_CourseId is null or e.CourseId = @Prm_CourseId)
or (@Prm_SpecializationId is null or e.SpecializationId = @Prm_SpecializationId)
他のヒント
これは動作しませんの数です。
- できない追加の文字列を返します。これらすべてのダイナミックまたはすべています。
の場合のビットが必要に文字列区切り文字"
...THEN '(e.CourseId is null or e.CourseId is not null)'...
"e.CourseIdがnullの場合はe.CourseIdがnullでない場合であり、その主なものは"いくデータ"
すべての必要なものは:
select f.EnquiryID,
e.[Name],
f.AttendedBy,
f.Remarks,
f.CreatedDate
from STD_FollowUp f
inner join
STD_Enquiry e
on f.EnquiryId=e.EnquiryId
所属していません StackOverflow