3つのテーブルsto_Product、sto_ProductXCategory、およびsto_Category
- sto_Productには、すべての製品情報が含まれています(bvin = Primary Key)
- sto_CategoryにはすべてのCategoryinfoがあります(bvin = Primary Key)
- sto_ProductXCategory(ProductIdとCategoryIdはPKとFKです)
一部の製品がsto_ProductXCategory(異なるCategoryId)で重複しているため、現在、製品が重複しています。
このSQLステートメントはより大きなストアドプロシージャの一部であるため、同じように維持しようとしています。
これは私が修正しようとしているステートメントです
DECLARE @Sortorder int =6;
with product as
(
select distinct p.*
from sto_Product p
inner join sto_ProductXCategory px on(p.bvin = px.productid)
where p.parentID = ''
and p.Status = 1
and p.siteprice >=0
and p.siteprice <= 2147483647
and (
(p.manufacturerid = '8036ab2c-641e-487b-a577-76c09c5c3cc9'
)
)
),
AllProducts AS
(
SELECT
RowNum =
CASE
WHEN @Sortorder = 0
THEN ROW_NUMBER() OVER (ORDER BY px.SortOrder)
WHEN @Sortorder = 1
THEN ROW_NUMBER() OVER (ORDER BY px.SortOrder)
WHEN @Sortorder = 2
THEN ROW_NUMBER() OVER (ORDER BY ProductName)
WHEN @Sortorder = 3
THEN ROW_NUMBER() OVER (ORDER BY SitePrice)
WHEN @Sortorder = 4
THEN ROW_NUMBER() OVER (ORDER BY SitePrice DESC)
WHEN @Sortorder = 6
THEN ROW_NUMBER() OVER (ORDER BY ProductName DESC)
ELSE ROW_NUMBER() OVER (ORDER BY px.SortOrder)
END,
p.*
from product p
inner join sto_ProductXCategory px on(p.bvin = px.productid)
)
SELECT AllProducts.RowNum,*,
(SELECT COUNT(*) FROM AllProducts) As TotalRowCount
FROM AllProducts
WHERE RowNum BETWEEN (1) and (12 )
ORDER BY AllProducts.RowNum
サンプルデータセット
sto_Product
- bvin、sku、ProductName、SitePrice
- 0001,001、AProductName、100
- 0002,002、BProductName、50
- 0003,003、CProductName、75
sto_Category
- bvin、CategoryName
- 1000、ACategoryName
- 2000、BCategoryName
- 3000、CCategoryName
sto_ProductXCategory
- ProductId、CategoryId、SortOrder
- 0001,1000,1
- 0001,2000,2
- 0001,3000,3
- 0002,2000,4
- 0003,2000,5
- 0003,3000,6
前もって感謝します