where句の制約に関してもう1つ質問があります。ここに私のコードです:SQLの設定制約where句では、何をすべきかわからない
use db.random123
go
create view dbo.increasebasedonvar
as
select *
from dbo.incbasedondate as ibd
where ibd.[avg rent var] < 30 and
([avg rent var] between 15 and 30 and datediff(month,ibd.leasedate, '2016-09-01') > 24)
go
ここでの私の目標は、[平均VARを借り]レコードを除外することである> = 30で、[平均VARを借りる]場合(包括的)15との間にあるレコードのサブセットを除外「リース期間」と将来の日付との間の時間は24ヶ月未満である。次に、これらのパラメータによって除外されていない残りのレコードをすべて返したいと思います。
残念ながら、これを達成する方法を完全にはわかりませんが、ifステートメントを組み立ててみましたが、それは適切に機能していないようです。どんな助けでも大歓迎です。
編集------------------------------------------
私は、選択クエリでヘルパー列を作成して別のルートを試してみることにしました。これは今私が持っているものです。
use Random
go
create view dbo.incbasedondate
as
select
riv.unitcode,
riv.lcode,
riv.sitename,
riv.ledgerid,
riv.unitname,
riv.tenantid,
riv.sfname,
riv.slname,
riv.scompany,
riv.stdrate,
riv.rent,
riv.[std rate variance],
riv.[average rent],
riv.[avg rent var],
**case
when riv.[avg rent var] not between 15 and 30
then 1
else
case
when (riv.[avg rent var] between 15 and 30) and datediff(month,riv.leasedate, '2016-09-01') > 24
then '15-30 inc'
else null
end
end as [15-30 Increase],**
riv.leasedate,
riv.rentlastchanged,
riv.[Days Same],
riv.[Days Same Form],
riv.paidthrudate,
riv.schedrent,
riv.schedrentstart,
riv.tenzip,
riv.sitezip
from dbo.rentincreaseview as riv
where
([days same form] <= 9 and
datediff(month, leasedate,'2016-09-01') >= 8)
or([days same form] >9 and
datediff(month, rentlastchanged,'2016-09-01') >= 12)
go
drop view dbo.FinalIncDataSet
use Random
go
create view dbo.FinalIncDataSet
as
**select *
from dbo.incbasedondate as ibd
where ibd.[avg rent var] < 30 and ibd.[15-30 Increase] is not null
order by ibd.unitcode**
go
これらの問題のためのキーパーツであること:ほぼすべてが排除されているよう
case
when riv.[avg rent var] not between 15 and 30
then 1
else
case
when (riv.[avg rent var] between 15 and 30) and datediff(month,riv.leasedate, '2016-09-01') > 24
then '15-30 inc'
else null
end
end as [15-30 Increase],**
**select *
from dbo.incbasedondate as ibd
where ibd.[avg rent var] < 30 and ibd.[15-30 Increase] is not null
order by ibd.unitcode**
そして今、私の結果はさらに間違っている、それが見えます。私の入れ子のケースに文があるときに問題はありますか?
理論的には、私はリース日付と将来の日付との間の時間が24ヶ月未満の場合、[avg rent var]が15〜30のレコードを除外するIF文を作成しようとしていました。しかし、私は逆を行ったように見えます。私は使用するために正しい構文を諦めています。 – sccrbrg
私はそれをnotに変更すれば、15から30の間のすべてのレコードを除外しませんか?時差が24ヶ月を超えている限り、私は15から30の間の記録を含めたいと思う。 – sccrbrg
私はちょうどあなたの前のコメントに基づいて私の応答を改訂しました。それに応じてコードを変更してチェックアウトすることができます。 –