sql-server-2008 – 在T-SQL中分解2列以上的表
发布时间:2020-05-24 08:58:39 所属栏目:MsSql 来源:互联网
导读:如果我有下表 Hour Clicks Conversions12:00 2 01:00 3 22:00 1 1 如何编写一个SELECT语句,在两列中分解它,所以我得到: 12:00 1 012:00 1 01:00 1 01:00 1 11:00 1 12:00 1 1 如果我不能用SEL
|
如果我有下表 Hour Clicks Conversions 12:00 2 0 1:00 3 2 2:00 1 1 如何编写一个SELECT语句,在两列中分解它,所以我得到: 12:00 1 0 12:00 1 0 1:00 1 0 1:00 1 1 1:00 1 1 2:00 1 1 如果我不能用SELECT做到这一点,我如何用循环编写存储过程? 谢谢! 解决方法这假设对于[Hour]的任何给定值,将只有一行.如果可能存在重复,我会首先聚合它们(我假设源已经是某种聚合).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],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]),Conversions; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
