gpt4 book ai didi

sql-server-2008 - 在 T-SQL 中将表分解为 2 列

转载 作者:行者123 更新时间:2023-12-04 07:04:03 25 4
gpt4 key购买 nike

如果我有下表

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], 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;

关于sql-server-2008 - 在 T-SQL 中将表分解为 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9317821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com