首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程依据参数值不同查询动态的列

2013-09-17 
存储过程根据参数值不同查询动态的列本帖最后由 chai1338 于 2013-09-16 15:09:39 编辑if @FromPTallW

存储过程根据参数值不同查询动态的列
本帖最后由 chai1338 于 2013-09-16 15:09:39 编辑


 if @FromPT<>'all'
WHILE @Next <= dbo.Get_StrArrayLength(@ProductIDs,',') --循环id集合
BEGIN
SET @CurrProductID = CONVERT(int,dbo.Get_StrArrayStrOfIndex(@ProductIDs,',',@Next))
   
INSERT INTO #ProductTmp ([FromPT],[ProductId], [Price])
SELECT 
    p.FromPT,
P.ProductID,
ISNULL((SELECT MIN(cn_Price) FROM Nop_Productvariant WHERE ProductID = P.ProductId and FromPT=@FromPT),0) AS Price
FROM 
Nop_Product P
WHERE
P.ProductID = @CurrProductID  AND Deleted = 0
            and p.FromPT=@FromPT
SET @Next=@Next+1
END

@FromPT的值为固定4个,不同的国家
如何在查询做个判断 根据@FromPT的值查询对应的不同价格列
当@FromPT为“中国”时,查询cn_Price列
当为“英国”时,查询en_Price列
[解决办法]
case 
when @FromPT='中国' then cn_Price 
when @FromPT='英国' then en_Price 
end
[解决办法]
 if @FromPT<>'all'
WHILE @Next <= dbo.Get_StrArrayLength(@ProductIDs,',') --循环id集合
BEGIN
SET @CurrProductID = CONVERT(int,dbo.Get_StrArrayStrOfIndex(@ProductIDs,',',@Next))
   
INSERT INTO #ProductTmp ([FromPT],[ProductId], [Price])
SELECT p.FromPT,P.ProductID,
case @FromPT when'中国' then cn_Price when'英国' then en_Price end as price
FROM Nop_Product P
LEFT JOIN Nop_Productvariant T ON T.ProductID = P.ProductId AND T.FromPT=@FromPT
WHEREP.ProductID = @CurrProductID  AND Deleted = 0 and p.FromPT=@FromPT
SET @Next=@Next+1
END

热点排行