2016-11-24 72 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