我的問題的第一個版本令人困惑,我需要製作更小的塊。 如果用戶可以從網站過濾產品,則一個產品只能在列表中出現一次。 由於加入此代碼給了我兩個相同的產品,我該如何解決? 我想我需要一個解決方案,而不使用不同的,因爲它會稍後給我頭痛。從AW2012當過濾和使用動態順序獲取不同的行
代碼:
declare @safetystocklevel int
set @safetystocklevel = 1000
declare @status int
set @status = 2
select * from Production.Product p
inner join Purchasing.ProductVendor pv on p.ProductID = pv.ProductID
inner join Purchasing.Vendor v on v.BusinessEntityID = pv.BusinessEntityID
inner join Production.ProductDocument pd on p.ProductID = pd.ProductID
inner join Production.Document d on d.DocumentNode = pd.DocumentNode
WHERE
(@safetystocklevel = '' or p.SafetyStockLevel = @safetystocklevel)
and (@status = '' or d.Status = @status)
輸出:
產品編號名稱
506反射
506反射
編輯:
謝謝,我現在用的集團通過獲得不同的行。 是啊,也許使用組通過對我的作品,我也會盡現了一些測試.....
嗨再次
我希望所有的產品要搜索的,所以我想我需要左外連接來實現那。 當我加入動態訂單時遇到麻煩,會添加更多行。 可能是因爲我必須將poh.Status添加到羣組中。 產品表中有504行,此查詢返回776行。 (我已刪除在WHERE過濾,因爲它是不是有趣,現在,林加入到其它表,現在只是爲了獲得更多的行一起玩)
代碼:
declare @sortType nvarchar(50)
set @sortType = 'Status'
select p.ProductID,
CASE WHEN @sortType = 'Status' THEN poh.Status END as Status,
CASE WHEN @sortType = 'ProductId' THEN p.ProductID END as ProductId
from Production.Product p
left outer join Purchasing.PurchaseOrderDetail pod on p.ProductID = pod.ProductID
left outer join Purchasing.PurchaseOrderHeader poh on poh.PurchaseOrderID = pod.PurchaseOrderID
left outer join Production.ProductDocument ppd on ppd.ProductID = p.ProductID
left outer join Production.Document pd on pd.DocumentNode = ppd.DocumentNode
group by p.ProductID, poh.Status
ORDER BY
CASE WHEN @sortType = 'Status' THEN poh.Status END ASC,
CASE WHEN @sortType = 'ProductId' THEN p.ProductID END ASC
你能澄清一下你的問題嗎?目前尚不清楚你想要達到什麼目標。你可能會展示一個(大概是手工製作的)表格,顯示你希望得到的數據(一些)? – 2013-09-28 20:34:45
嗨,我已經更新了問題 –
@CliffSmith,我想因爲你使用的是不同的,那麼其中一個表是1-n,那麼哪一個呢?我的意思是,什麼導致結果集有多個產品行,哪裏只需要一個? – mewm