Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL帮助,获取所需的输出_Sql_Amazon Redshift - Fatal编程技术网

SQL帮助,获取所需的输出

SQL帮助,获取所需的输出,sql,amazon-redshift,Sql,Amazon Redshift,输入: 所需输出: +---------+---------+--------+ | row_min | row_max | tCount | +---------+---------+--------+ | 2 | 4 | 1 | | 7 | 10 | 2 | | 13 | 14 | 3 | +---------+---------+--------+ row_min和row_max在输出中展开,相

输入:

所需输出:

+---------+---------+--------+ | row_min | row_max | tCount | +---------+---------+--------+ | 2 | 4 | 1 | | 7 | 10 | 2 | | 13 | 14 | 3 | +---------+---------+--------+ row_min和row_max在输出中展开,相应的t计数在其范围内 这一步是数据转换的一部分,我需要使用驻留在AmazonRedshift中的SQL数据在数据集上执行。我被困在这一步上。
请提供相同操作所需的SQL代码,希望仅限于使用联接和分析函数。

您可以使用一个足够大的计数表来完成此操作,该计数表包含的数字高达表的MAXrow\u max:

+-----+--------+ | row | tcount | +-----+--------+ | 2 | 1 | | 3 | 1 | | 4 | 1 | | 7 | 2 | | 8 | 2 | | 9 | 2 | | 10 | 2 | | 13 | 3 | | 14 | 3 | +-----+--------+ 我认为红移支持简单的、非递归的CTE,所以上面的方法应该可以工作


此输出背后是否存在任何逻辑?@suslov row_min和row_max在输出中展开,相应的tCount在其范围内。这不是代码编写服务。到目前为止,您在生成数字序列方面做了哪些尝试?请转到mysql的循环和重复部分。我希望你能找到答案solution@MdJohirulIslam在SQL中,使用数字表而不是循环是正常的,因为SQL是声明性的,而不是过程性的:。
WITH Tally AS (
   SELECT ROW_NUMBER() OVER() AS n
   FROM (
      SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL 
      SELECT 1 UNION ALL SELECT 1 UNION ALL
      SELECT 1 UNION ALL SELECT 1 UNION ALL 
      SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ) x(n)
   CROSS JOIN (
      SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL 
      SELECT 1 UNION ALL SELECT 1 UNION ALL
      SELECT 1 UNION ALL SELECT 1 UNION ALL 
      SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ) y(n)
)
SELECT n, tCount
FROM Tally AS t
INNER JOIN mytable AS m ON t.n >= m.row_min AND t.n <= m.row_max