GenAmpsとGenVoltsをベースにした各ジェネレーターの月額料金を提供するレポートを作成しています。マイプライシングテーブルにGenAmps#とGenVoltサイズがある場合は、月額料金が入力されます。私の価格設定テーブルに見つからないGenAmps#とGenVoltsの値がある場合は、以下のようなケースがあります。これが発生すると、GenlyVoltsの値が等しい最も近いGenAmps#からMonthlyRateを引っ張ってほしい、ex(GenAmps 15、GenVolts KW)は価格表にはないので、MonthlyRateを(GenAmps 20、GenVolts KW)フィールドの1つがヌルで、値が必要な場合に最も近い数値を見つけます。
GenAmps GenVolts PricingGenAmp PricingGenVolt MonthRate(160hr)
10 KW NULL NULL NULL
15 KVA NULL NULL NULL
これは、彼らが価格表のGenAmps#とGenVolts値を見つけることができないならば、私のレポートは次のようになります。
GenAmps GenVolts MonthRate(160hr)
25 KVA 1251
20 KW 1251
(上記は価格表のものです)。これらは価格表にはないので、私は10KWが月額料金を20KWから15KVAを25KVAから引き上げることを望んでいます。したがって、次のようになります。
GenAmps GenVolts PricingGenAmp PricingGenVolt MonthRate(160hr)
10 KW 20 KW 1251
15 KVA 25 KVA 1251
クエリが正しく動作しているときは、上のデータのようになります。
価格表に記載されていないGenAmps#が10〜900の範囲です。
これは私が現在持っているクエリですので、データを見た目に見せるように改訂する必要があります。
SELECT TOP (100) PERCENT ContractID, SaleRep, GenAmps, GenVolts, GenPhase, EstRunningHours, MonthlyRate, DeliveryRate, PickupRate, FuelRate, DropCharge, HourlyServiceRate,
CASE WHEN gr.PricingGenAmps IS NULL THEN
(SELECT MAX(GenAmps) AS a1
FROM dbo.GeneratorSizePrices AS a
WHERE (GenAmps < gr.GenAmps) AND a.GenVolts = gr.GenVolts) ELSE gr.PricingGenAmps END AS PricingGenAmp, ISNULL([MonthRate(160hr)],
(SELECT [MonthRate(160hr)]
FROM dbo.GeneratorSizePrices AS b
WHERE (GenAmps =
(SELECT MAX(GenAmps) AS a
FROM dbo.GeneratorSizePrices
WHERE (GenAmps < gr.GenAmps) AND (GenVolts = gr.GenVolts))))) AS Month
FROM dbo.Elliott_GensRentalRate AS gr
GROUP BY ContractID, SaleRep, GenAmps, GenVolts, GenPhase, EstRunningHours, MonthlyRate, DeliveryRate, PickupRate, FuelRate, DropCharge, HourlyServiceRate, PricingGenAmps, [MonthRate(160hr)]
ORDER BY PricingGenAmps, GenAmps
ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –
"...最も近いGenAmpsから引っ張ってください#ここでGenVoltsの値等しく... "テーブルで見つかった次の高いGenAmps値、または表にない値からの最小デルタを持つGenAmps値を意味しますか?つまり、テーブルの「最も近い」値がテーブル内の値よりも小さい場合は、テーブル内の値を小さくしますか? Seanが示唆しているように、実際にはもっと詳細が必要です。 –
2人の後者。テーブル内の値から最小のデルタを持つ値は何でも。テーブル内の値より小さいか大きいかは関係ありません。 @ JimtheFrayed – ETA