Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何在一个表中显示两条记录?_Asp.net_Sql Server - Fatal编程技术网

Asp.net 如何在一个表中显示两条记录?

Asp.net 如何在一个表中显示两条记录?,asp.net,sql-server,Asp.net,Sql Server,我有如下程序: CREATE PROCEDURE studentpvt2 AS BEGIN SELECT TOP 1 StudentName, EC1, EC2, EC3, EC4, EC5, TotalMarks=EC1+EC2+EC3+EC4+EC5 FROM Student pivot ( SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[To

我有如下程序:

CREATE PROCEDURE studentpvt2
AS
BEGIN

SELECT 
     TOP 1 StudentName, 
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable ORDER  BY TotalMarks DESC

SELECT 
     TOP 1 StudentName,
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable ORDER  BY TotalMarks ASC;

END
当我执行此命令时,输出如下所示:

studentName EC1 EC2 EC3 EC4 EC5 TotalMarks
  Smita     76  45  67  56  76  320   

studentName EC1 EC2 EC3 EC4 EC5 TotalMarks
  Rajesh    34  56  12  45  23  170
我想让他们在一个表中显示这两条记录,所以请帮助我如何获得输出。这是我的第一个问题,如果有什么问题,请原谅

原始表格为:

StudentID StudentName科目分数
1萨维塔EC1 50
1萨维塔EC2 55
1萨维塔EC3 45
1萨维塔EC4 34
1萨维塔EC5 23
2拉杰什EC1 34
2拉杰什EC2 56
2拉杰什EC3 12
2拉杰什EC4 45
2拉杰什EC5 23
3斯密达EC1 76
3斯密达EC2 45
3斯密达EC3 67
3斯密达EC4 56
3斯密达EC5 76
4 Rahul EC1 66
4 Rahul EC2 34
4 Rahul EC3 22
4 Rahul EC4 18

4 Rahul EC5 33
使用
UNION
UNION ALL
。您还应该将
ORDER BY
更改为
WHERE
子句,以防止出现错误。见下文:

CREATE PROCEDURE studentpvt2
AS
BEGIN

SELECT 
     TOP 1 StudentName, 
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable WHERE TotalMarks = (
                 SELECT TOP 1 Sum(Marks) s_m
                 FROM   Student 
                 GROUP  BY StudentName
                 ORDER  BY s_m DESC)
UNION ALL
SELECT 
     TOP 1 StudentName,
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable WHERE TotalMarks = (
                 SELECT TOP 1 Sum(Marks) s_m
                 FROM   Student 
                 GROUP  BY StudentName
                 ORDER  BY s_m ASC);

END

使用
UNION
UNION ALL
。您还应该将
ORDER BY
更改为
WHERE
子句,以防止出现错误。见下文:

CREATE PROCEDURE studentpvt2
AS
BEGIN

SELECT 
     TOP 1 StudentName, 
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable WHERE TotalMarks = (
                 SELECT TOP 1 Sum(Marks) s_m
                 FROM   Student 
                 GROUP  BY StudentName
                 ORDER  BY s_m DESC)
UNION ALL
SELECT 
     TOP 1 StudentName,
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable WHERE TotalMarks = (
                 SELECT TOP 1 Sum(Marks) s_m
                 FROM   Student 
                 GROUP  BY StudentName
                 ORDER  BY s_m ASC);

END

使用
UNION
UNION ALL
。您还应该将
ORDER BY
更改为
WHERE
子句,以防止出现错误。见下文:

CREATE PROCEDURE studentpvt2
AS
BEGIN

SELECT 
     TOP 1 StudentName, 
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable WHERE TotalMarks = (
                 SELECT TOP 1 Sum(Marks) s_m
                 FROM   Student 
                 GROUP  BY StudentName
                 ORDER  BY s_m DESC)
UNION ALL
SELECT 
     TOP 1 StudentName,
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable WHERE TotalMarks = (
                 SELECT TOP 1 Sum(Marks) s_m
                 FROM   Student 
                 GROUP  BY StudentName
                 ORDER  BY s_m ASC);

END

使用
UNION
UNION ALL
。您还应该将
ORDER BY
更改为
WHERE
子句,以防止出现错误。见下文:

CREATE PROCEDURE studentpvt2
AS
BEGIN

SELECT 
     TOP 1 StudentName, 
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable WHERE TotalMarks = (
                 SELECT TOP 1 Sum(Marks) s_m
                 FROM   Student 
                 GROUP  BY StudentName
                 ORDER  BY s_m DESC)
UNION ALL
SELECT 
     TOP 1 StudentName,
     EC1,
     EC2,
     EC3,
     EC4,
     EC5,
     TotalMarks=EC1+EC2+EC3+EC4+EC5 
 FROM Student pivot
(
SUM (Marks) FOR subject IN ([EC1],[EC2],[EC3],[EC4],[EC5],[TotalMarks])
)
AS pivotTable WHERE TotalMarks = (
                 SELECT TOP 1 Sum(Marks) s_m
                 FROM   Student 
                 GROUP  BY StudentName
                 ORDER  BY s_m ASC);

END

在两个
pivot
查询之间不使用
Union
,而是使用单个pivot并过滤数据透视后的最大和最小总计

您不能在
Union
Union All
中间使用
order by

SELECT *
FROM   (SELECT StudentName,
               EC1,
               EC2,
               EC3,
               EC4,
               EC5,
               TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
        FROM   Yourtable
               PIVOT ( Sum(Marks)
                     FOR subject IN([EC1],
                                    [EC2],
                                    [EC3],
                                    [EC4],
                                    [EC5],
                                    [TotalMarks]) ) AS pivotTable) a
WHERE  TotalMarks = (SELECT TOP 1 Sum(Marks) s_m
                     FROM   Yourtable
                     GROUP  BY StudentName
                     ORDER  BY s_m DESC)
        OR TotalMarks = (SELECT TOP 1 Sum(Marks) s_m
                         FROM   Yourtable
                         GROUP  BY StudentName
                         ORDER  BY s_m ASC) 
或使用堆叠式CTE

;WITH min_cte
     AS (SELECT TOP 1 StudentName,
                      EC1,EC2,EC3,EC4,EC5,
                      TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
         FROM   Yourtable
                PIVOT ( Sum(Marks)
                      FOR subject IN([EC1],
                                     [EC2],
                                     [EC3],
                                     [EC4],
                                     [EC5],
                                     [TotalMarks]) ) AS pivotTable
         ORDER  BY TotalMarks ASC),
     max_cte
     AS (SELECT TOP 1 StudentName,
                      EC1,EC2,EC3,EC4,EC5,
                      TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
         FROM   Yourtable
                PIVOT ( Sum(Marks)
                      FOR subject IN([EC1],
                                     [EC2],
                                     [EC3],
                                     [EC4],
                                     [EC5],
                                     [TotalMarks]) ) AS pivotTable
         ORDER  BY TotalMarks DESC) SELECT *
FROM   min_cte
UNION ALL
SELECT *
FROM   max_cte 

在两个
pivot
查询之间不使用
Union
,而是使用单个pivot并过滤数据透视后的最大和最小总计

您不能在
Union
Union All
中间使用
order by

SELECT *
FROM   (SELECT StudentName,
               EC1,
               EC2,
               EC3,
               EC4,
               EC5,
               TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
        FROM   Yourtable
               PIVOT ( Sum(Marks)
                     FOR subject IN([EC1],
                                    [EC2],
                                    [EC3],
                                    [EC4],
                                    [EC5],
                                    [TotalMarks]) ) AS pivotTable) a
WHERE  TotalMarks = (SELECT TOP 1 Sum(Marks) s_m
                     FROM   Yourtable
                     GROUP  BY StudentName
                     ORDER  BY s_m DESC)
        OR TotalMarks = (SELECT TOP 1 Sum(Marks) s_m
                         FROM   Yourtable
                         GROUP  BY StudentName
                         ORDER  BY s_m ASC) 
或使用堆叠式CTE

;WITH min_cte
     AS (SELECT TOP 1 StudentName,
                      EC1,EC2,EC3,EC4,EC5,
                      TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
         FROM   Yourtable
                PIVOT ( Sum(Marks)
                      FOR subject IN([EC1],
                                     [EC2],
                                     [EC3],
                                     [EC4],
                                     [EC5],
                                     [TotalMarks]) ) AS pivotTable
         ORDER  BY TotalMarks ASC),
     max_cte
     AS (SELECT TOP 1 StudentName,
                      EC1,EC2,EC3,EC4,EC5,
                      TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
         FROM   Yourtable
                PIVOT ( Sum(Marks)
                      FOR subject IN([EC1],
                                     [EC2],
                                     [EC3],
                                     [EC4],
                                     [EC5],
                                     [TotalMarks]) ) AS pivotTable
         ORDER  BY TotalMarks DESC) SELECT *
FROM   min_cte
UNION ALL
SELECT *
FROM   max_cte 

在两个
pivot
查询之间不使用
Union
,而是使用单个pivot并过滤数据透视后的最大和最小总计

您不能在
Union
Union All
中间使用
order by

SELECT *
FROM   (SELECT StudentName,
               EC1,
               EC2,
               EC3,
               EC4,
               EC5,
               TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
        FROM   Yourtable
               PIVOT ( Sum(Marks)
                     FOR subject IN([EC1],
                                    [EC2],
                                    [EC3],
                                    [EC4],
                                    [EC5],
                                    [TotalMarks]) ) AS pivotTable) a
WHERE  TotalMarks = (SELECT TOP 1 Sum(Marks) s_m
                     FROM   Yourtable
                     GROUP  BY StudentName
                     ORDER  BY s_m DESC)
        OR TotalMarks = (SELECT TOP 1 Sum(Marks) s_m
                         FROM   Yourtable
                         GROUP  BY StudentName
                         ORDER  BY s_m ASC) 
或使用堆叠式CTE

;WITH min_cte
     AS (SELECT TOP 1 StudentName,
                      EC1,EC2,EC3,EC4,EC5,
                      TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
         FROM   Yourtable
                PIVOT ( Sum(Marks)
                      FOR subject IN([EC1],
                                     [EC2],
                                     [EC3],
                                     [EC4],
                                     [EC5],
                                     [TotalMarks]) ) AS pivotTable
         ORDER  BY TotalMarks ASC),
     max_cte
     AS (SELECT TOP 1 StudentName,
                      EC1,EC2,EC3,EC4,EC5,
                      TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
         FROM   Yourtable
                PIVOT ( Sum(Marks)
                      FOR subject IN([EC1],
                                     [EC2],
                                     [EC3],
                                     [EC4],
                                     [EC5],
                                     [TotalMarks]) ) AS pivotTable
         ORDER  BY TotalMarks DESC) SELECT *
FROM   min_cte
UNION ALL
SELECT *
FROM   max_cte 

在两个
pivot
查询之间不使用
Union
,而是使用单个pivot并过滤数据透视后的最大和最小总计

您不能在
Union
Union All
中间使用
order by

SELECT *
FROM   (SELECT StudentName,
               EC1,
               EC2,
               EC3,
               EC4,
               EC5,
               TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
        FROM   Yourtable
               PIVOT ( Sum(Marks)
                     FOR subject IN([EC1],
                                    [EC2],
                                    [EC3],
                                    [EC4],
                                    [EC5],
                                    [TotalMarks]) ) AS pivotTable) a
WHERE  TotalMarks = (SELECT TOP 1 Sum(Marks) s_m
                     FROM   Yourtable
                     GROUP  BY StudentName
                     ORDER  BY s_m DESC)
        OR TotalMarks = (SELECT TOP 1 Sum(Marks) s_m
                         FROM   Yourtable
                         GROUP  BY StudentName
                         ORDER  BY s_m ASC) 
或使用堆叠式CTE

;WITH min_cte
     AS (SELECT TOP 1 StudentName,
                      EC1,EC2,EC3,EC4,EC5,
                      TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
         FROM   Yourtable
                PIVOT ( Sum(Marks)
                      FOR subject IN([EC1],
                                     [EC2],
                                     [EC3],
                                     [EC4],
                                     [EC5],
                                     [TotalMarks]) ) AS pivotTable
         ORDER  BY TotalMarks ASC),
     max_cte
     AS (SELECT TOP 1 StudentName,
                      EC1,EC2,EC3,EC4,EC5,
                      TotalMarks=EC1 + EC2 + EC3 + EC4 + EC5
         FROM   Yourtable
                PIVOT ( Sum(Marks)
                      FOR subject IN([EC1],
                                     [EC2],
                                     [EC3],
                                     [EC4],
                                     [EC5],
                                     [TotalMarks]) ) AS pivotTable
         ORDER  BY TotalMarks DESC) SELECT *
FROM   min_cte
UNION ALL
SELECT *
FROM   max_cte 


使用Union获取单集中数据使用Union获取单集中数据使用Union获取单集中数据使用Union获取单集中数据使用Union获取单集中数据我试图这样做,但出现错误,提示Msg 156,级别15,状态1,第1行关键字“Union”附近的语法不正确。编辑了我的答案。试试看。我试过这么做,但是出现了一个错误,说Msg 156,级别15,状态1,第1行关键字“union”附近的语法不正确。编辑了我的答案。试试看。我试过这么做,但是出现了一个错误,说Msg 156,级别15,状态1,第1行关键字“union”附近的语法不正确。编辑了我的答案。试试看。我试过这么做,但是出现了一个错误,说Msg 156,级别15,状态1,第1行关键字“union”附近的语法不正确。编辑了我的答案。试试看,长官,这个程序会给“Rahul”两次输出。但我需要两张总分最高和最低的记录。因此,我添加了一些更改“作为数据透视表order by TotalMarks desc)和order by TotalMarks”,然后给出了Rahul和smita的记录。但根据我的表格,Rahul的总分第二低,Rajesh的总分最低。是的,先生,成功了。但是你错过了一个“(”在第二个pivot运算符之后,还有一个“S”。谢谢。抱歉@LagnajitPuhan,这是一个打字错误!嗨,你能在这个主题上再帮我一点忙吗?如何在TotalMarks之后添加另一列来显示相同的记录,显示学生是否通过或失败。如果一个学生在两个科目上的分数低于30分,那么他/她就失败了else pass..sir这个过程给出了两次“Rahul”的输出。但是我需要两个具有最高totalmarks和最低totalmarks的记录。因此,我添加了一些更改“作为数据透视表按totalmarks排序desc)一个按totalmarks排序”,然后它给出了Rahul和smita的记录。但根据我的表格,Rahul的总分第二低,Rajesh的总分最低。是的,先生,成功了。但是你错过了一个“(”在第二个pivot运算符之后,还有一个“S”。谢谢。抱歉@LagnajitPuhan,这是一个打字错误!嗨,你能在这个主题上再帮我一点忙吗?如何在TotalMarks之后添加另一列来显示相同的记录,显示学生是否通过或失败。如果一个学生在两个科目上的分数低于30分,那么他/她就失败了else pass..sir这个过程给出了两次“Rahul”的输出。但是我需要两个具有最高totalmarks和最低totalmarks的记录。因此,我添加了一些更改“作为数据透视表按totalmarks排序desc)一个按totalmarks排序”,然后它给出了Rahul和smita的记录。但根据我的表格,Rahul的总分第二低,Rajesh的总分最低。是的,先生,成功了。但是你错过了一个“(”在第二个pivot运算符之后,还有一个“S”。谢谢。抱歉@LagnajitPuhan,这是一个打字错误!嗨,你能在这个主题上再帮我一点忙吗?如何在TotalMarks之后添加另一列来显示相同的记录,显示学生是否通过或失败。如果一个学生在两个科目上的分数低于30分,那么他/她就失败了else pass..sir这个过程给出了两次“Rahul”的输出。但是我需要两个具有最高totalmarks和最低totalmarks的记录。因此,我添加了一些更改“作为数据透视表按totalmarks排序desc)一个按totalmarks排序”,然后它给出了Rahul和smita的记录。但根据我的表格,Rahul的总分第二低,Rajesh的总分最低。是的,先生,成功了。但是你错过了一个“(”在第二次旋转操作之后