我有一个存储过程,
SELECT Top(1)
TableA.*,
TableB.*,
someFunction(TableA.ID),
coalesce(TableC.someColumn, -1) As SomeColumnExample
FROM
TableA INNER JOIN TableB ON TableA.ID = TableB.IDA
LEFT JOIN TableC ON TableA.ID = TableC.IDA
Where TableA.ID = @ParaID
Order By TableC.DateTime Desc
现在我得到了结果,例如,
IDA SomeColumn DateAdded
1 100 2014-05-15 10:22:00
1 200 2014-05-10 12:00:00
2 300 2014-06-10 12:00:00
3 400 2014-07-10 12:00:00
我想要的(最新日期)
IDA SomeColumn DateAdded
1 200 2014-05-10 12:00:00
2 300 2014-06-10 12:00:00
3 400 2014-07-10 12:00:00
答案 0 :(得分:1)
首先,我正在寻找一些不会给我带左连接的空列的东西,所以我用了,
coalesce(TableC.SomeColumn, -1) As SomeColumnHeHe
然后我遇到了一个问题,我只需从左连接中选择前1,所以我使用了OUTER APPLY,如下所示,
SELECT Top(1)
TableA.*,
TableB.*,
someFunction(TableA.ID),
coalesce(TableC.someColumn, -1) As SomeColumnExample,
TempTable.IDA
FROM
TableA INNER JOIN TableB ON TableA.ID = TableB.IDA
OUTER APPLY
(SELECT TOP(1) * FROM TableC where TableC.IDA = TableA.IDA Order By DateAdded Desc ) As TempTable
Where TableA.ID = @ParaID
Order By TableC.DateTime Desc
答案 1 :(得分:0)
你所描述的听起来不是左连接,而是内连接。为什么你说它必须左连接?
如果您只想在表C中有相应记录时想要记录,那么内部联接将完成
编辑:
你的问题似乎发生了重大变化......我真的不知道你现在要求的是什么。您的select语句不以任何方式表示样本数据。