2017-07-29 42 views
0

我想合併來自不同表格的數據。我跟蹤物品價格,因此我有一個特定物品的多個價格條目。如果在價格表中找不到條目,​​則表示該商品是免費的。 使用Top 1Order by Id Desc來獲得最後一項認爲它可以工作,但SQL給我一個使用它的警告。按警告順序SQL查看

SELECT 
(SELECT TOP (1) CASE WHEN Price IS NULL THEN 0.0 
         ELSE Price END 
FROM dbo.Prices 
WHERE (Id = table1.Id) AND (TableName = 'mytable') 
ORDER BY Id DESC) AS Price, 

(SELECT TOP (1) CASE WHEN Price IS NULL OR DiscountPrice IS NULL THEN 0.0 
         ELSE DiscountPrice END 
    FROM dbo.Prices 
    WHERE (Id = table1.Id) AND (TableName = 'mytable') 
    ORDER BY Id DESC) AS Discount FROM dbo.MainTable as table1 

「警告:ORDER BY子句僅用於確定由在視圖定義中的TOP子句返回的行。 ORDER BY子句不保證排序結果...」

預期的結果是檢索來自其它表

+0

添加以下細節:全查詢,錯誤信息,樣本數據和預期的結果 –

+0

「警告:ORDER BY子句僅用於確定被retur行由視圖定義中的TOP子句定義。 ORDER BY子句不保證排序結果...'預期的結果是從另一個表中檢索最後一個價格和折扣號碼 – user0187409

+0

發佈完整查詢! –

回答

1

使用聚合和子查詢

有點像過去的價格和數量折扣...

Where Id = (select max(Id) from dbo.prices)