我的表格如下:
method year segment
ABC 2014 AB
CAB 2014 AB
PAU 2013 AB
COR 2015 CD
PRK 2016 IK
所有细分受众群都应该是同一年。所以我需要确定其中有多少年份不同。这是一个错误。
结果应为
method year segment
PAU 2013 AB
或
错误= 1
你能帮我解决一下代码吗? 到目前为止,我尝试过这样的事情,但它给了我完整的清单:
create table E1 as
select segment, dat_start
from pd_segment a
where a.segment in (select b.segment from pd_segment b
group by b.segment
having count (b.dat_start NE a.dat_start-1))
答案 0 :(得分:0)
我怀疑你正在使用SAS并想要这个:
create table E1 as
select segment, dat_start
from pd_segment a
where a.segment in (select b.segment
from pd_segment b
group by b.segment
having min(b.dat_start) <> max(b.dat_start)
);
在SQL(和proc SQL)中,“not equal”通常拼写为<>
。
答案 1 :(得分:0)
让我们说我们的桌名是&#34; MyTable&#34;
此查询将报告超过1年的细分:
select distinct segment from MyTable
Group by segment
having count(distinct year)>1
然后,如果您想要所有其他列数据,您可以将此结果与表本身
连接select Mytable.* from MyTable join (
select distinct segment from MyTable
Group by segment
having count(distinct year)>1
) as x on x.segment=Mytable.segment
答案 2 :(得分:0)
试试这个
SELECT *
FROM (
SELECT *,ROW_NUMBER() OVER(PARTITION BY [YEAR]
ORDER BY SEGMENT DESC) ROW_NO FROM @TABLE1
) T WHERE row_no <> 1
答案 3 :(得分:0)
如果你没有很多片段,而你所需要的只是片段年份不正确的方法,那么下面的简单查询可以解决这个问题:
SELECT
*
FROM pd_segment
WHERE
(dat_start NOT LIKE 2014 AND segment LIKE 'AB')
OR (dat_start NOT LIKE 2015 AND segment LIKE 'CD')
OR (dat_start NOT LIKE 2016 AND segment LIKE 'IK')
编辑:添加结果
method dat_start segment
PAU 2013 AB