Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Teradata SQL查询,仅筛选具有所有时段ID条目的行_Sql_Date_Count_Teradata_Window Functions - Fatal编程技术网

Teradata SQL查询,仅筛选具有所有时段ID条目的行

Teradata SQL查询,仅筛选具有所有时段ID条目的行,sql,date,count,teradata,window-functions,Sql,Date,Count,Teradata,Window Functions,我有一个包含3列(ID、YYYYMM、sales)的数据集。我只想让那些每个YYYYMM(201909到202003)都有记录的ID 我想将日期设置为ID和YYYYMM级别。我不想使用group by并将数据集缩减为一个ID行。您可以使用窗口函数和限定子句: select t.* from mytable t qualify count(*) over(partition by id) = 1 + max(floor(yyyymm / 100) * 12 + (yyymmm mod 1

我有一个包含3列(ID、YYYYMM、sales)的数据集。我只想让那些每个YYYYMM(201909到202003)都有记录的ID


我想将日期设置为ID和YYYYMM级别。我不想使用group by并将数据集缩减为一个ID行。

您可以使用窗口函数和
限定
子句:

select t.*
from mytable t
qualify count(*) over(partition by id) 
    = 1 + max(floor(yyyymm / 100) * 12 + (yyymmm mod 100)) over() 
        - min(floor(yyyymm / 100) * 12 + (yyymmm mod 100)) over()

qualify
子句计算当前
id
存在的记录数,并将其与
yyyymmdd
s的总计数进行比较,总计数可以通过减去其最大值和最小值来计算(这假设这是一个数字值,就像它看起来的那样).

您可以使用窗口函数和
限定
子句:

select t.*
from mytable t
qualify count(*) over(partition by id) 
    = 1 + max(floor(yyyymm / 100) * 12 + (yyymmm mod 100)) over() 
        - min(floor(yyyymm / 100) * 12 + (yyymmm mod 100)) over()

qualify
子句计算当前
id
存在的记录数,并将其与
yyyymmdd
s的总计数进行比较,总计数可以通过减去其最大值和最小值(这假设这是一个数字值,看起来是这样的)。

Hmmm。我想这正是你想要的:

select t.*
from mytable t
where yyyymm >= 201909 and
      yyyymm <= 202003
qualify count(*) over (partition by id) = 6;
选择t*
来自MyT表
其中yyyymm>=201909和

yyyymmHmmm。我想这正是你想要的:

select t.*
from mytable t
where yyyymm >= 201909 and
      yyyymm <= 202003
qualify count(*) over (partition by id) = 6;
选择t*
来自MyT表
其中yyyymm>=201909和

yyyymm yyyymm的数据类型是什么?yyyymm的数据类型是什么?因为没有第13-99&0个月,您的最大最小计算结果是94:-)@dnoeth:啊,是的,当然。。。谢谢你指出这一点!好的,我确实(试图)修正了算法。因为没有13-99月&0,你的最大最小计算结果是94:-)@dnoeth:啊,是的,当然。。。谢谢你指出这一点!好的,我确实(试图)修正了算法。