SQL Serverを使用して、Where句で2つのSelectステートメントがありますが、重複した結果が得られます。私の最初のクエリは:SQLマージ重複を削除する際に異なる列番号のクエリを選択しますか?
SELECT
PricingContingencies.*,
Terms.*,
rscDescription AS RateScheme,
ptyAbbreviation AS PointTypeAbbreviation,
FAKs.*,
fat.*
FROM ((((PricingContingencies
INNER JOIN Terms ON pcoTerms = terID)
INNER JOIN PointTypes ON pcoPointTypeFK = ptyID)
LEFT JOIN RateSchemes ON pcoRateSchemeFK = rscID)
LEFT JOIN FAKs ON fakPricingContingencyFK = pcoID)
LEFT JOIN FuelAgreementTypes fat ON ftyID = pcoFuelAgreementTypeFK
WHERE pcoPricingAgreementFK = 61523 and pcoID = 16490608
そして、2行(正しい)です。
私の2番目のクエリは非常に似ていますが、追加の列があります(唯一の違いはある 'LEFT ON PalletPricing登録しようpprPricingContingenciesFK = pcoID)' 'LEFT fakPricingContingencyFK = pcoID ON FAKS)、JOIN' の代わりに:
SELECT
PricingContingencies.*,
Terms.*,
rscDescription as RateScheme,
ptyAbbreviation as PointTypeAbbreviation,
PalletPricing.*,
fat.*
FROM ((((PricingContingencies
INNER JOIN Terms ON pcoTerms = terID)
INNER JOIN PointTypes ON pcoPointTypeFK = ptyID)
LEFT JOIN RateSchemes ON pcoRateSchemeFK = rscID)
LEFT JOIN PalletPricing ON pprPricingContingenciesFK = pcoID)
LEFT JOIN FuelAgreementTypes fat ON ftyID = pcoFuelAgreementTypeFK
WHERE pcoPricingAgreementFK = 61523 and pcoID = 16490608
とを6行(これも正しい)を返します。
合計で8行になるように組み合わせるにはどうすればよいですか?私は使用してそれらを組み合わせる場合のように内部結合:私はPalletPricing列が重複し、誤っれる12行を取得
SELECT
FirstSet.*,
SecondSet.*
FROM (
SELECT
PricingContingencies.*,
Terms.*,
rscDescription AS RateScheme,
ptyAbbreviation AS PointTypeAbbreviation,
FAKs.*,
fat.*
FROM ((((PricingContingencies
INNER JOIN Terms ON pcoTerms = terID)
INNER JOIN PointTypes ON pcoPointTypeFK = ptyID)
LEFT JOIN RateSchemes ON pcoRateSchemeFK = rscID)
LEFT JOIN FAKs ON fakPricingContingencyFK = pcoID)
LEFT JOIN FuelAgreementTypes fat ON ftyID = pcoFuelAgreementTypeFK
WHERE pcoPricingAgreementFK = 61523 and pcoID = 16490608
) as FirstSet
INNER JOIN
(
SELECT
PricingContingencies.*,
Terms.*,
rscDescription as RateScheme,
ptyAbbreviation as PointTypeAbbreviation,
PalletPricing.*,
fat.*
FROM ((((PricingContingencies
INNER JOIN Terms ON pcoTerms = terID)
INNER JOIN PointTypes ON pcoPointTypeFK = ptyID)
LEFT JOIN RateSchemes ON pcoRateSchemeFK = rscID)
LEFT JOIN PalletPricing ON pprPricingContingenciesFK = pcoID)
LEFT JOIN FuelAgreementTypes fat ON ftyID = pcoFuelAgreementTypeFK
WHERE pcoPricingAgreementFK = 61523 and pcoID = 16490608
) as SecondSet
ON FirstSet.pcoID = SecondSet.pcoID
ORDER BY FirstSet.pcoPriority DESC
(第2の結果を倍増[6×2])。どうすれば正しい8行(2 + 6)が得られるのですか?
ありがとうございます。
基本的にUNIONクエリを探しています。ただし、UNION(またはそのより包括的な兄弟UNION ALL)では、2つの問合せでは、各列にほぼ同じデータ型の列が同じになる必要があります。 PalletPricingとFaksが同じテーブルレイアウトを持っていない限り、偽のデータを返す必要があります。また、2つのソースのそれぞれからのカラム名は、トップクエリから出力するカラム名に設定されます。 –
本当に重複していますか?おそらく、少なくとも1つの列が異なります。 – Parfait
正しいですが、1つの列が異なります。その1つの異なる列を除外して、行全体がクエリに含まれないようにするにはどうすればよいですか? – smac