您好我是新手(来自法国 - Wines!)的数据库管理:我想显示一个包含每项服务20%结果的报告:我会将此代码放在下面,但是 它什么都没给我:n:
ALTER procedure test
as
BEGIN
Set NOCOUNT ON
DECLARE @Query nvarchar(4000)
DECLARE @CodePrestation nvarchar(50);
set @CodePrestation='select distinct code_prestation FROM vw_Details_Requete_Qualite_oth where code_prestation=613229'
WHILE (@CodePrestation<>'NULL')
BEGIN
set @Query='select TOP(20)percent[code_prestation],[Libellé Prestation] FROM vw_Details_Requete_Qualite_oth where [code_prestation]='+@CodePrestation;
END
end
set @Query=@Query
execute sp_executesql @Query
谢谢你的帮助。
答案 0 :(得分:1)
尝试这样的事情:
DECLARE @Percent int
SET @Percent = (SELECT COUNT(*)*0.2 FROM #Test)
SELECT Top (@Percent) * FROM #Test
我希望这会给你你想要的东西。
祝你有个愉快的一天 艾蒂安
<强>更新强>
有一种更简单的方法:
SELECT TOP(20) PERCENT * From YourTable
答案 1 :(得分:0)
尝试运行此脚本,它会将每个CodePrestation的前20%进行四舍五入:
DECLARE @vw_Details_Requete_Qualite_oth table
(
[code_prestation] int,
[Libellé Prestation] int
)
INSERT @vw_Details_Requete_Qualite_oth
values(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(2,1),(1,2)
;WITH CTE as
(
SELECT
ntile(5) over (PARTITION BY [code_prestation] ORDER BY [Libellé Prestation]) n,
[code_prestation],
[Libellé Prestation]
FROM @vw_Details_Requete_Qualite_oth
)
SELECT
[code_prestation],
[Libellé Prestation]
FROM CTE
WHERE n = 1
结果:
code_prestation Libellé Prestation
1 1
1 2
2 1
这不是为您的表编写的,它是作为示例编写的。它应该很容易转换为您的环境。虽然。