私は両方のテーブルを作成する2つのクエリを持っています。私は必要なすべての列を持っていないときにどのようにクロス結合を行うのですか?
SELECT SITA, B, C, Rooms, Datearrived, Market_segment, StayDays as RN, AMTRoom as Rev
FROM [UKRMC].[dbo].[revenue] rev
JOIN [UKRMC].[dbo].[Contacts] contacts
ON rev.hotel_id = contacts.id
WHERE datearrived between '2017-01-01' and '2017-08-31' and C like '%GB%'
ORDER BY sita
このクエリは、各SITA(30 SITAがある)、各MARKET_SEGMENTで2017年1月1日から2017年8月31日に各日付を持つテーブルを与え(18明確Market_segmentsが、各SITAのdoesnがありますすべてのMarket_segmentsがあり、これが私の問題がある場所です)。
私の次のクエリは次のとおりです。
SELECT SEG
FROM [UKRMC].[dbo].[Segmentation]
WHERE SEG IN ('RAC', 'BIT', 'BIQ', 'CBI', 'TOF', 'QOF', 'BOA', 'FIT', 'LYO', 'RER', 'OTH', 'NRG', 'XXX', 'CRW', 'BGR', 'BGO', 'LGR', 'LGS')
だからこれは、18個のセグメントのテーブルを提供します。
今、私が望むのは、各SITAと各Market_Segment(各日付は30 x 18行)と一緒に2017-01-01から2017-08-31までの各日付を持つ表です最初のクエリの列も。 B、C、部屋、RNとしてのAMRoom、AMTRoom as Rev.
もちろん、すべての日付とmarket_Segment/Segの組み合わせが最初の表にないので、これらの代わりにRNとRevを0として出力したい、C、部屋は各SITAで固定されています(固定値のために別の結合が必要ですか?)
私は必要なものが意味をなさないことを願っています。どんな助けもありがとう!次に、2つのクエリのサンプルデータをそれぞれ示します。
SITA B C Rooms Datearrived Market_segment RN Rev
ABZPD PI GB 150 2017-01-01 TOF 2 45
ABZPD PI GB 150 2017-01-01 BAO 33 30.5
ABZPD PI GB 150 2017-01-01 BGR 11 50
ABZPD PI GB 150 2017-01-01 NRG 52 10
ABZPD PI GB 150 2017-01-01 CRW 20 90
ABZPD PI GB 150 2017-01-01 BIT 7 20
ABZPD PI GB 150 2017-01-01 CBI 0 40
ABZPD PI GB 150 2017-01-01 OTH 10 50
ABZPD PI GB 150 2017-01-01 BIQ 11 60
ABZPD PI GB 150 2017-01-01 RER 12 65
**SEG**
RAC
BIT
BIQ
CBI
TOF
QOF
BOA
FIT
LYO
RER
OTH
NRG
XXX
CRW
BGR
BGO
LGR
LGS
この質問のためのいくつかのデータが含まれてくださいすることができます。私はあなたに従わない。 –
ここではCROSS JOINを使用したいとは思わないが、LEFTまたはRIGHT JOIN ...最初のクエリのMarket_segmentは2番目のqeuryのSEGと同じですか?私はその関係ですか?サンプル表やデータなしで言うのは難しいです。 –
はい、最初のクエリのMarket_segmentは2番目のクエリのSEGと同じです@RaymondNijland – Sorath