2016-11-24 62 views
-4

我有一个表名产品具有列:分组记录和排除

ProductID int, 
ProductName varchar(50), 
FromDate DATETIME, 
ToDate DATETIME, 
Modified DATETIME, 
ModifiedBy int 

此表包含相同ProductNamesModified也是一个date类型的列,它说明在该Modifieddate上对产品所做的任何更改。当任何变化到产品ToDateModified将根据其他明智的变化进行更新制作都将是null

现在,我的要求是:

  • 我想有ToDate用值 和productname还有null两列
  • 不包括那些Productname没有改变意味着只有ToDateModified作为NULL
  • 需要结果集洛卡和摩卡

的我都试过这个代码

select *  
from  Products cpp with (nolock) 
where (TODATE is not null and Modfied is not null)   
     or (TODATE is null and Modified is null) 
order by ProductID desc 

Table Data

+1

*也与空*和*不包括那些没有变化的Productname意味着只有ToDate和Modified为NULL *是非常矛盾的。你需要提供你需要的更好的解释。 –

+1

目前还不清楚你在问什么:可能是一个或两个例子来显示你想要什么*和*你从什么开始。 – Richard

+0

添加图像以获得更好的理解。 – DevUzair

回答

0

我认为你的问题有点含糊不清。试试这一个,即使结果不为你带来双无效的两列,但它消除了完全不修改产品名称:两列

select productname, todate, modified 
from Products 
group by productname, todate, modified 
having sum(case when (TODATE is not null and Modfied is not null) then 1 else 0 end) > 0 
+0

添加数据表图像附加备注 只需要Loca和Mocca的数据在结果集 – DevUzair

+0

图像是您运行查询后给我的结果吗? – nuukun

+0

嘿哥们,它没有产生所需的结果集。这个查询只返回那些同时具有todate和修改过的记录 我需要两行同一产品,它们在同一行中有修改,并且在其他行中有null和修改列 – DevUzair

0
select *  
    from Products cpp with (nolock) 
    where NOT (TODATE is not null and Modfied is null)   
    order by ProductID desc