以下のクエリを使用できます。これが実際のSQLフィドルです
SELECT CASE WHEN RN=1 THEN IDNumber END IDNumber,
CASE WHEN RN=1 THEN Amount END Amount,
Address, City, State, Zip
FROM
(
SELECT A.IDNumber, A.Amount,
B.Address, B.City, B.STATE, B.Zip,
RN = Row_number() over (partition BY A.IDNumber
ORDER BY B.IDNumber)
FROM tableA A
LEFT JOIN tableB B ON A.IDNumber = B.IDNumber
) X
ORDER BY IDNumber, RN
この出力が得られます
ID番号 金額 住所 市区町村 州 郵便番号
1 200.1 1 公道ゴッサム AX 19281
(null) (null) Secret Batcave Gotham AX 19281
(null) (null) 海外の隠れ家 不特定?? なし
2 312.45 ジョン ウー レーン トレスパス TX 12345
(null) (null) 住所 都市 州 Sq-123
このサンプルテーブルが与えられたとき
CREATE TABLE TableA(
IDNumber int, Amount money)
CREATE TABLE TableB(
IDNumber int,
Address varchar(max),
City varchar(max),
State varchar(max),
Zip varchar(max))
INSERT TableA SELECT
1,200.10 union all select
2,312.45
INSERT TableB SELECT
1, '1 Public Road', 'Gotham', 'AX', '19281' union all select
1, 'Secret Batcave', 'Gotham', 'AX', '19281' union all select
1, 'Overseas Hideaway', 'Unspecified', '??', 'n/a' union all select
2, 'John Woo Lane', 'Trespass', 'TX', '12345' union all select
2, 'Address', 'City', 'State', 'Sq-123'