我在表中有一个条目集合,表与另一个表连接在一起我需要返回一个结果集,不包括特定日期值的条目。
表1
我需要根据查询返回一组条目,并找到该值以及其他项目的集合,其中截图的日期为< = GETDATE()
结果应该是
如您所见,结果集返回所有三个General Worker项,但只应返回日期时间为< = GetDate()的位置。
我尝试了各种方法,从(SELECT ..(PARTITION))方法到子值表结果,但没有一个返回我需要的结果集。
我需要所有其他行,只有General Worker,其中date< = GETDATE()并且我被卡住了。
更新
修改前的我的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
我需要将结果看起来像这样:
更新3
也许这可能会有所帮助?
表1,对于nContractID,返回19个结果(其中3个是相同的),唯一不同的值是dEndDate列应该是< = GETDATE()。我需要提取dEndDate为null和dEndDate< = GETDATE()的所有值。到目前为止我尝试过的所有内容都只返回一个结果,但是如果删除了dEndDate项> = GETDATE(),我头脑中的逻辑说我应该有17个结果?
答案 0 :(得分:2)
需要清理查询和思考过程
如果要调试dEndDate,请将其包含在输出
中 dEndDate为null且dEndDate< = GETDATE()的所有值始终为false。
值不能为null并且具有值。
在默认配置中,与null的比较始终为false null< = 1/1/2000是假的 null> = 1/1/2000是假的 null = null为false
如果你想要null或dEndDate< = GETDATE(),那么:
where dEndDate is null or dEndDate <= GETDATE()
为什么你会期望这不会返回一行?
dEndDate <= GETDATE()