我试图在 SQL 中创建一个简单的正弦曲线,它在值 (0-23) 之间交替。
我有以下变量:x,这是当前的偏移量。y 是目标偏移量,z 是我的最大值(23)。
有谁能帮我表达一下吗?已经用谷歌搜索并阅读了它,但还没有让它工作。
对任何答案都会很棒..
最好的问候,汤姆
您需要某种虚拟行集来执行此操作。
在Oracle
:
SELECT level - 1, SIN((level - 1) * 3.141592653 / 12)
FROM dual
CONNECT BY
level <= 24
Run Code Online (Sandbox Code Playgroud)
在SQL Server 2005+
:
WITH rows AS
(
SELECT 0 AS level
UNION ALL
SELECT level + 1
FROM rows
WHERE level <= 23
)
SELECT level, SIN((level) * 3.141592653 / 12)
FROM rows
Run Code Online (Sandbox Code Playgroud)
在PostgreSQL
:
SELECT level, SIN(level * 3.141592653 / 12)
FROM generate_series(0, 23) level
Run Code Online (Sandbox Code Playgroud)
在MySQL
:
SELECT level, SIN(level * 3.141592653 / 12)
FROM (
SELECT 0 AS level
UNION ALL
SELECT 1 AS level
UNION ALL
…
/*
Yes, you need to repeat it 24 times.
Everyone who reads it: please call MySQL and ask them
to implement generate_series.
Thanks.
*/
UNION ALL
SELECT 23 AS level
) q
Run Code Online (Sandbox Code Playgroud)