私はSSRSレポートを作成しており、2つのテーブルを結合するという決定に対してユーザ入力を許可しています。彼らはNo(0)
を選択した場合は、このクエリが実行されます。ユーザ入力に基づく条件付き結合
select distinct case when book.PROPCODE = '00' then 'R6' else book.PROPCODE end as PROPCODE,
BKNAME,
BKARRIVE,
BKDEPART,
BKRMNUM,
book.BOOKID
from NGFMBOOK book
inner join NGFMBOOK2 on ltrim(rtrim(replace(replace(Uniqueid2,'/','0'),'-',0))) = ltrim(rtrim(str(book.BOOKID)))
where BKARRIVE between @StartDate and @EndDate
and book.PROPCODE in (@PropCode)
Order By BookID
彼らはYes(1)
は、追加のクエリに追加された参加]を選択した場合:
select distinct case when book.PROPCODE = '00' then 'R6' else book.PROPCODE end as PROPCODE,
BKNAME,
BKARRIVE,
BKDEPART,
BKRMNUM,
book.BOOKID
from NGFMBOOK book
inner join NGFMBOOK2 on ltrim(rtrim(replace(replace(Uniqueid2,'/','0'),'-',0))) = ltrim(rtrim(str(book.BOOKID)))
inner join [RPV1Data\RPV1Data].RP_V1Data.dbo.NGFUNCT func ON book.BOOKID = func.BOOKID --this is the extra join
where BKARRIVE between @StartDate and @EndDate
and book.PROPCODE in (@PropCode)
Order By BookID
Caseステートメントまたは類似した何かを持ってする方法はあります私は完全に異なる2つのクエリを持つ必要はありませんか?私は
set @queryHeader = 'select distinct case when book.PROPCODE = ''00'' then ''R6'' else book.PROPCODE end as PROPCODE, BKNAME, BKARRIVE, BKDEPART, BKRMNUM, book.BOOKID from NGFMBOOK book inner join NGFMBOOK2 on ltrim(rtrim(replace(replace(Uniqueid2,''/'',''0''),''-'',0))) = ltrim(rtrim(str(book.BOOKID)))'
set @option1 = 'inner join NGFMBOOK2 on ltrim(rtrim(replace(replace(Uniqueid2,''/'',''0''),''-'',0))) = ltrim(rtrim(str(book.BOOKID)))'
set @option2 = 'inner join NGFMBOOK2 on ltrim(rtrim(replace(replace(Uniqueid2,''/'',''0''),''-'',0))) = ltrim(rtrim(str(book.BOOKID))) inner join [RPV1Data\RPV1Data].RP_V1Data.dbo.NGFUNCT func ON book.BOOKID = func.BOOKID'
set @queryFooter = 'where BKARRIVE between @StartDate and @EndDate and book.PROPCODE in (@PropCode) Order By BookID'
set @query = @queryHeader + case when @SearchFun = 1 then @option2 else @option1 end + @queryFooter
exec(@query)
をしようとしていますしかし、それは私にエラー(不適切な構文近い「BKARRIVE」)
(それはです@paremeterの代わりに何を使用していたのか)。しかし、それが0の場合、私のクエリは何も返しません。 – gilliduck
私はそれをleft joinとwhere節の別の条件で更新しました。それが動作するかどうか確認できますか? – CuriousKid
余分な句と句がありません。 SearchFunが1の場合は7を、SearchFunが0の場合は0を返します(51を取得する必要があります)。 – gilliduck