這裏是解決這個的一種方法:
-- Your sample data
DECLARE @table TABLE (ID int, Reason varchar(100));
INSERT @table
VALUES
(123, 'Post-Close QC Audit - December 2015'),
(124, 'Pre Fund Fraud Prevention'),
(125, 'Post-Close QC Audit - November 2015'),
(126, 'Post-Close QC Audit - October 2016'),
(127, 'Post-Close QC Audit - November'),
(128, 'Post-Close QC Audit - December 2015');
-- solution
WITH DateExtract AS
(
SELECT ID, Reason, Mo =
SUBSTRING
(
Reason, start, PATINDEX('% [0-9][0-9][0-9][0-9]%', SUBSTRING(Reason,start,8000))+5
)
FROM
(
SELECT
ID, Reason, start = NULLIF(MAX(PATINDEX('%'+Mo+'% [0-9][0-9][0-9][0-9]%', Reason)),0)
FROM @table
CROSS JOIN
(VALUES ('January'),('February'),('March'),('April'),('May'),('June'),('July'),
('August'),('September'),('October'),('November'),('December')) M(Mo)
GROUP BY ID, Reason
) prep
),
DateMatrix AS
(
SELECT
[December 2015] = MAX(CASE Mo WHEN 'December 2015' THEN ID END),
[November 2015] = MAX(CASE Mo WHEN 'November 2015' THEN ID END),
[October 2015] = MAX(CASE Mo WHEN 'October 2016' THEN ID END)
FROM DateExtract
GROUP BY ID
)
SELECT *
FROM DateMatrix
WHERE NOT([December 2015] IS NULL AND [November 2015] IS NULL AND [October 2015] IS NULL);
請張貼你的查詢和你得到的錯誤。 –
你需要一個'REVERSE','CHARINDEX','SUBSTRING'和'PIVOT' – NEER