Dev*_*ble 3 sql t-sql sql-server
此查询按原样执行.但是,SQL Management Studio不会将其保存为视图,因为我定义了一个变量.
DECLARE @HighestTransaction int SET @HighestTransaction = (SELECT MAX(CardID) FROM dbo.Transactions) SELECT Uploads.*, Transactions.* FROM Uploads LEFT OUTER JOIN dbo.Transactions ON dbo.Uploads.Code = dbo.Transactions.CardID WHERE (Uploads.Code > CASE WHEN @HighestTransaction IS NULL THEN -1 ELSE @HighestTransaction END)
我还没有真正使用存储过程或用户定义的函数,所以我不确定这样做的最佳方法.或者,如果有更好的方式来写这个,我也愿意接受建议.
就像是...
WITh cHighestCard AS
(
SELECT ISNULL(MAX(CardID), -1) AS MaxCard FROM dbo.Transactions
)
SELECT STAUpload.*, Transactions.*
FROM dbo.STAUpload LEFT OUTER JOIN
dbo.Transactions ON dbo.STAUpload.Code = dbo.Transactions.CardID
WHERE dbo.STAUpload.Code > MaxCard --edit, error spotted by martin
Run Code Online (Sandbox Code Playgroud)
编辑:不需要CTE:它混合了集合和标量.哎呀.
SELECT STAUpload.*, Transactions.*
FROM dbo.STAUpload LEFT OUTER JOIN
dbo.Transactions ON dbo.STAUpload.Code = dbo.Transactions.CardID
WHERE dbo.STAUpload.Code >
(SELECT ISNULL(MAX(CardID), -1) AS MaxCard
FROM dbo.Transactions)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
461 次 |
最近记录: |