-1
複数の出現および曜日を持つシーケンス番号を見つけると(day0からd62まで)、同じ行たとえば、シーケンス番号939860789は8日後に発生しますが、各データは異なる行にあり、このシーケンス番号のデータはすべて、最初のオカレンスであるd0/5770の同じ行にとどまる必要があります。あなたは正しい軌道に乗って全くあり複数の出現を含むシーケンス番号を見つけ、同じ行のデータを返す
IF OBJECT_ID('test01..#TestSample') IS NOT NULL
DROP TABLE #TestSample;
CREATE TABLE #TestSample
(
seq_number CHAR(9),
d0 VARCHAR(6), d1 VARCHAR(6), d2 VARCHAR(6), d3 VARCHAR(6),
d4 VARCHAR(6), d5 VARCHAR(6), d6 VARCHAR(6), d7 VARCHAR(6),
d8 VARCHAR(6), d9 VARCHAR(6), d10 VARCHAR(6), d11 VARCHAR(6),
d12 VARCHAR(6), d13 VARCHAR(6), d14 VARCHAR(6), d15 VARCHAR(6),
d16 VARCHAR(6), d17 VARCHAR(6), d18 VARCHAR(6), d19 VARCHAR(6),
d20 VARCHAR(6)
)
INSERT INTO #TestSample (seq_number, d0)
VALUES ('939860783', '632'),
('939860785', '6851'),
('939860789', '5770'),
('939860789', 'V4579'),
('939860789', '4019'),
('939860789', '2867'),
('939860789', '25000'),
('939860789', '2722'),
('939860789', '42731'),
('939860789', 'V5861')
SELECT seq_number,
d0 = MAX(CASE WHEN rn = 0 THEN d0 ELSE NULL END),
d1 = MAX(CASE WHEN rn = 1 THEN d0 ELSE NULL END),
d2 = MAX(CASE WHEN rn = 2 THEN d0 ELSE NULL END),
d3 = MAX(CASE WHEN rn = 3 THEN d0 ELSE NULL END)
FROM (SELECT seq_number, d0,
rn = ROW_NUMBER() OVER(PARTITION BY seq_number ORDER BY (SELECT NULL))-1
FROM #TestSample
) d
GROUP BY d.seq_number
おかげ
質問と例との間に相関はありません。例えば。 「シーケンス番号939860789が8日で発生する」ことを示す日付列はどこにありますか?例の列の名前が「d0」の理由は? –