我想創建條件連接到我的T-SQL查詢中的表。在本實施例中使用的表是從Northwind數據庫(只有一個附加表ProductCategories)有條件地連接表
表產品與表分類有許多一對多的關係,因此表ProductCategories進入圖片。
我需要的數量列於表訂單明細的每一種產品在一定的範疇下降的總和。所以我有一個像下面這樣的查詢
Select p.ProductName, Sum(od.Quantity) As Qty
From Products p
Join OrderDetails od On od.ProductID = p.ProductID
Join ProductCategories pc On pc.ProductID = p.ProductID
And pc.CategoryID = @CategoryID
Group By p.ProductName
@CategoryID是一個可選參數。所以,如果它未提供,則加入到表ProductCategories不會被要求 和查詢應該看起來像一個下面
Select p.ProductName, Sum(od.Quantity) As Qty
From Products p
Join OrderDetails od On od.ProductID = p.ProductID
Group By p.ProductName
我想要實現這個而不重複整個查詢如果條件(如下)
If @CategoryID Is Null
Select p.ProductName, Sum(od.Quantity) As Qty
From Products p
Join OrderDetails od On od.ProductID = p.ProductID
Group By p.ProductName
Else
Select p.ProductName, Sum(od.Quantity) As Qty
From Products p
Join OrderDetails od On od.ProductID = p.ProductID
Join ProductCategories pc On pc.ProductID = p.ProductID
And pc.CategoryID = @CategoryID
Group By p.ProductName
這被簡化,其具有許多其它表和類似ProductCategories條件查詢的版本。並且將需要多個多重條件和重複的查詢。我也嘗試動態生成查詢。它可以工作,但查詢根本不可讀。
任何解決方案? 謝謝。
重複的od.Quantity是我想要避免的,這就是我不想加入表ProductCategories的原因,如果@CategoryID沒有提供 – Romeo 2012-01-10 04:58:59
謝謝,它的工作原理。 – Romeo 2012-01-10 05:34:59