Giả định này sẽ chỉ bao giờ là một hàng cho bất kỳ giá trị đã cho nào là [Hour]
. Nếu có thể có bản sao, tôi sẽ tổng hợp những người đầu tiên (tôi giả sử nguồn đã là một tập hợp của một số loại).
DECLARE @x TABLE ([Hour] CHAR(5), Clicks INT, Conversions INT);
INSERT @x SELECT '12:00',2,0
UNION ALL SELECT '13:00',3,2
UNION ALL SELECT '14:00',1,1;
;WITH x AS
(
SELECT n = ROW_NUMBER() OVER (ORDER BY s1.[object_id]) FROM sys.all_columns AS s1
-- CROSS JOIN (SELECT 1 UNION ALL SELECT 2) AS s2 -- to double the rows if you need more
),
y AS
(
SELECT [Hour], Conversions, Clicks,
m = MAX(CASE WHEN Conversions > Clicks THEN Conversions ELSE Clicks END)
FROM @x GROUP BY [Hour], Conversions, Clicks
)
SELECT y.[Hour],
Clicks = CASE WHEN Clicks < x.n THEN 0 ELSE 1 END,
Conversions = CASE WHEN Conversions < x.n THEN 0 ELSE 1 END
FROM x INNER JOIN y ON x.n <= y.m
ORDER BY CONVERT(TIME, y.[Hour]), Clicks, Conversions;
Nguồn
2012-02-16 19:48:49
Tạo một CLR sp –
1 vấn đề thú vị. Không phải là một cái mới, nhưng nó đã cho tôi một vài phút để nghĩ về giải pháp, vì vậy bạn nhận được một cuộc bỏ phiếu từ tôi. :-) –
Tôi không thấy điểm của cột thứ hai dường như luôn trả về 1 –