0

テーブルのマージに関する多くの例を読みましたが、ほとんどの人は結合可能なコンテンツを持っています。対応するクエリにデータがない同じ名前の複数の列と NULL を残す FULL JOIN を使用する場合を除いて、結合できるデータはありません。

CREATE TABLE #tmpBus
(
id varchar(50),
partnumber varchar(400),
attributecname nvarchar(255),
attributevalue nvarchar(1700),
assetfilename varchar(85),
orderby varchar(10)
)

CREATE TABLE #tmpBus1
(
id varchar(50),
name varchar(500),
url varchar(2550),
assetfilename varchar(850),
orderby varchar(10)
)

CREATE TABLE #tmpBus2
(
partnumber varchar(400),
attributecname varchar(255),
attributevale varchar(1700),
orderby varchar(10),
assetfilename varchar(850),
name varchar(500),
url varchar(2550)
)

INSERT INTO #tmpBus exec getSectionNewData 5665976;

INSERT INTO #tmpBus1 exec getSectionFeaturedData 5665976;

SELECT DISTINCT * FROM #tmpBus tb
FULL JOIN #tmpBus1 tb1
ON tb.partnumber=tb1.name

DROP TABLE #tmpBus
DROP TABLE #tmpBus1
DROP TABLE #tmpBus2

私の目標は、2 つの一時テーブル (#tmpBus & #tmpBus1) からデータを取得して、1 つの統合テーブル (#tmpBus2) に作成することです。考えられる方法で、あらゆるタイプの結合とグループを試しました。上記のコードの出力のスクリーンショットを次に示します。NULL に注意してください。各テーブルの対応する値を使用して、フラット テーブルを #tmpBus2 に取得しようとしています。そのため、id、assetfilename、および orderby フィールドは、2 つの個別の列と orderby 列で並べ替える機能の代わりに統合されます。

ここに画像の説明を入力

私を正しい方向に向かわせるための助けは、非常に役に立ちます。

4

2 に答える 2

2

単純なUNION結合を使用する

SELECT id, partnernumber, attributecname, attributevalue, assetfilename, orderby, NULL AS url
FROM #tmpBus tb
UNION
SELECT id, name, NULL, NULL, assetfilename, orderby, url
FROM #tmpBus1 tb1
ORDER BY orderby
于 2012-11-20T11:58:08.650 に答える
0

複数の列を単一の列に統合しようとしているだけの場合は、これを試してください。

SELECT 
--isnull(tb.id, tb1.id)                         Id
  isnull(tb.partnumber, tb1.name)               PartNumber
, tb.attributecname                             AttributeCName
, tb.attributevalue                             AttributeValue
, isnull(tb.orderby, tb1.orderby)               OrderBy
, isnull(tb.assetfilename, tb1.assetfilename)   AssetFilename
, isnull(tb1.name, tb.partnumber)               Name
, tb1.url                                       URL
FROM #tmpBus tb
FULL JOIN #tmpBus1 tb1
ON tb.partnumber=tb1.name

あなたのデータ/要件についてもっと知らなければ、私はこれ以上助けることはできません-サンプル入力データと期待される出力を提供できれば、私(またはここの誰か)はあなたのニーズに合わせてクエリを微調整できます.

于 2012-11-20T00:11:50.417 に答える