すぐにバットをオフ - 私は非常に 'ケース'に新しいです。私は以下を読む:How do I perform an IF...THEN in an SQL SELECT?しかし、それは本当に私の質問に答えていない。ケースを使用する場合 - これは可能ですか?
select
section_name, *
from
property.lease_period lp
where
lp.lease_current_stop_date < getdate() and (lp.lease_status = 'Active' or lp.lease_status = 'Overholding')
and lp.period_id = @period_id
and lp.building_id = @building_id
and not exists
(
select 1
from lease_deal.lease
where lp.suite_name = tenancy_reference
and lp.building_id = building_id
)
case when(@section_name <> 'ALL')
then(and upper(section_name) = upper(@section_name))
end
order by period_id desc
はこれが可能である:
は、基本的に次の線に沿って何か私がやろうとしているのですか?もしそうなら、私は何が間違っているのですか?
T1が; DR:
基本的に私は希望:@section_nameが 'ALL' と等しくないとき
and upper(section_name) = upper(@section_name)
だけには私のwhere句には適用され
select *は使用しないでください。ここでsection_nameを2回返すと、サーバーリソースが無駄になります。あなたが参加していれば同じことが起こります。 Plus select *は単独では遅くなります。実際に必要な列のみを使用してください。 – HLGEM
しかし、このSQLはSSRSレポートに使用されていることに同意します。通常のコールポイントでは、すべての列を選択してから、レポートが使用するすべてのことを知ってから、より具体的にクエリを変更します開発プロセス全体を通じて追加データを要求する)。 私はここでlp。*を使用していたはずであることを認めています - 宣言自体は悪い習慣です。 – Codingo