2013-07-23 79 views
1

我有一個表中的條目集合,表與另一個表連接在一起,我需要返回一個結果集,排除特定日期值的條目。多個結果集不包括列

表1

lookup table

我需要返回基於查詢的條目的收集和發現價值,與其他項目的集合,沿着其中的日期應爲每截圖是< = GETDATE ()

結果應該是

results

正如你所看到的,結果集返回所有三個普通工作者項目,但應該只返回日期時間爲< = GetDate()。

我已經嘗試了各種方法,從(SELECT ..(PARTITION))方法到子值表結果,並沒有一個返回我需要的結果集。

我需要所有其他行,只有普通工人,其中日期< = GETDATE(),我卡住了。

UPDATE

我的T-SQL修改之前聲明:

SELECT 
    T0.nContractID, 
    T1.sJobCatNo, 
    T1.nJobCatID, 
    T1.sJobCatDesc, 
    T1.nDeleted, 
    T1.nAdminLocked, 
    T1.nClientDefault, 
    T1.nRateNT, 
    CASE 
     WHEN (T0.sDistributionCode IN ('Nails', 'Board')) 
     THEN 1 
     ELSE 0 
    END AS 'ShowRate' 
FROM 
    [dbo].[Contract] AS T0 
    INNER JOIN [dbo].[JobCategoryRates] AS T1 ON T1.nContractID = T0.nContractID 
WHERE 
    T1.nContractID = 200198 
    AND T1.nDeleted = 0 
ORDER BY 
    T1.sJobCatDesc 

更新2

我需要的結果是這樣的:

enter image description here

UPDATE 3

也許這可能有幫助嗎?

表1對於nContractID返回19個結果(其中3個是相同的),唯一不同的值是dEndDate列應該是< = GETDATE()。我需要提取dEndDate爲空且dEndDate爲< = GETDATE()的所有值。到目前爲止,我嘗試過的所有東西都只能帶回一個結果,但我腦子裏的邏輯說我應該有17個結果,如果dEndDate items> = GETDATE()被刪除了?

+0

您是否嘗試添加AND T1。[Date] <= GETDATE()到您的WHERE子句中? –

+0

@SteveFord是的,它返回一個結果,其他列消失。 – JadedEric

+1

如果您需要查看帶有空值的行,那麼您可以嘗試AND(T1。[Date] <= GetDate()OR T1。[Date] IS NULL) –

回答

2

需要清理的查詢和你的思維過程

如果你想調試dEndDate然後將其包含在輸出

所有值,其中dEndDate爲null,並且dEndDate < = GETDATE()始終是假的。
值不能爲空並且有值。

在默認配置中,與null的比較始終爲false。
空< = 1/1/2000是假
空> = 1/1/2000是假
如果你想null或dEndDate < = GETDATE(),則空= null是假

where dEndDate is null or dEndDate <= GETDATE() 

爲什麼你會期望這不會返回一行?

dEndDate <= GETDATE()