Jquery 我如何正确地将在职者的头衔附加到当前的职位上?

Jquery 我如何正确地将在职者的头衔附加到当前的职位上?,jquery,asp.net,sql-server,vb.net,Jquery,Asp.net,Sql Server,Vb.net,下面的问题这么简单,真的让我很紧张 请容忍我 下面的查询列出了参加office的个人 如果其中一名候选人是现任公职人员,请在其姓名后加上括号中在职人员的头衔 我已经在SSMS中运行了以下查询,并得到了我正在寻找的结果,但当与我的.net应用程序一起使用时,它不会将现任职务附加到当前任职者 我错过了什么 WITH ctePreAgg AS ( SELECT ( ElectionName + ' - ' + CAST(ClosingDat

下面的问题这么简单,真的让我很紧张

请容忍我

下面的查询列出了参加office的个人

如果其中一名候选人是现任公职人员,请在其姓名后加上括号中在职人员的头衔

我已经在SSMS中运行了以下查询,并得到了我正在寻找的结果,但当与我的.net应用程序一起使用时,它不会将现任职务附加到当前任职者

我错过了什么

WITH    ctePreAgg
            AS (
                SELECT ( ElectionName + ' - ' + CAST(ClosingDate AS VARCHAR(14)) ) electionName
                    ,CASE WHEN Position = 'Member' THEN 'NULL'
                            ELSE Position
                    END AS Position
                    ,CASE WHEN c.CurrentOfficeHolder = 'Incumbent'
                            THEN CandidateName + '(' + c.CurrentOfficeHolder + ')'
                            ELSE CandidateName
                    END AS CandidateName
                    ,c.PositionId
                    ,CurrentOfficeHolder
                    ,AnswerType
                FROM Candidates c
                JOIN Positions p
                    ON c.PositionId = p.PositionId
                JOIN Elections e
                    ON c.ElectionId = e.ElectionId
                WHERE c.ElectionId IN ( 1, 2, 3 )
                GROUP BY Position
                    ,CandidateId
                    ,CandidateName
                    ,c.PositionId
                    ,CurrentOfficeHolder
                    ,AnswerType
                    ,ElectionName
                    ,ClosingDate
                )
    SELECT [ElectionName_Position] = CASE WHEN GROUPING(mh.PositionId) = 0 THEN MAX(mh.Position)
                                            ELSE mh.ElectionName
                                        END
            ,CandidateName = CASE WHEN GROUPING(mh.PositionId) = 0 THEN MAX(mh.CandidateName)
                                    ELSE ''
                            END
            ,PositionId = CASE WHEN GROUPING(mh.PositionId) = 0 THEN mh.PositionId
                                ELSE 0
                            END
            ,CurrentOfficeHolder = CASE WHEN GROUPING(mh.PositionId) = 0
                                        THEN MAX(ISNULL(mh.CurrentOfficeHolder, 'NULL'))
                                        ELSE ''
                                    END
            ,AnswerType = CASE WHEN GROUPING(mh.PositionId) = 0 THEN MAX(mh.AnswerType)
                                ELSE ''
                            END
        FROM ctePreAgg mh
        GROUP BY ElectionName
            ,PositionId
            WITH ROLLUP
        HAVING GROUPING(mh.ElectionName) = 0
        ORDER BY mh.ElectionName
            ,GROUPING(mh.PositionId) DESC
            ,mh.PositionID;
//SqlDataSource:

        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:BallotsConnectionString %>"
            SelectCommand="WITH ctePreAgg
      AS (
           SELECT ( ElectionName + ' - ' + CAST(ClosingDate AS VARCHAR(14)) ) electionName
               ,CASE WHEN Position = 'Member' THEN ''
                     ELSE Position
                END AS Position
               ,CASE WHEN c.CurrentOfficeHolder = 'Incumbent' THEN CandidateName + '(' + c.CurrentOfficeHolder + ')'
                     ELSE CandidateName
                END AS CandidateName
               ,c.PositionId
               ,AnswerType
            FROM Candidates c
            JOIN Positions p
                ON c.PositionId = p.PositionId
            JOIN Elections e
                ON c.ElectionId = e.ElectionId
            WHERE c.ElectionId IN ( 1, 2, 3 )
            GROUP BY Position
               ,CandidateId
               ,CandidateName
               ,c.PositionId
               ,CurrentOfficeHolder
               ,AnswerType
               ,ElectionName
               ,ClosingDate
         )
SELECT [ElectionName_Position] = CASE WHEN GROUPING(mh.PositionId) = 0 THEN MAX(mh.Position)
                                      ELSE mh.ElectionName
                                 END
       ,CandidateName = CASE WHEN GROUPING(mh.PositionId) = 0 THEN MAX(mh.CandidateName)
                             ELSE ''
                        END
       ,PositionId = CASE WHEN GROUPING(mh.PositionId) = 0 THEN mh.PositionId
                          ELSE 0
                     END
       ,AnswerType = CASE WHEN GROUPING(mh.PositionId) = 0 THEN MAX(mh.AnswerType)
                          ELSE ''
                     END
    FROM ctePreAgg mh
    GROUP BY ElectionName
       ,PositionId
        WITH ROLLUP
    HAVING GROUPING(mh.ElectionName) = 0
    ORDER BY mh.ElectionName
       ,GROUPING(mh.PositionId) DESC
       ,mh.PositionID;">
           <SelectParameters>
           <asp:SessionParameter SessionField="ElectionId" Type="Int32" Name="ElectionId" DefaultValue="0" />
          </SelectParameters>
        </asp:SqlDataSource>


您缺少列
,CurrentOfficeHolder=分组时的大小写(mh.PositionId)=0,然后最大值(ISNULL(mh.CurrentOfficeHolder,'NULL'))否则“”将结束SQL代码中的.NET。您可能只是在完成工作之前复制了代码。这是将代码保存在一个地方的最佳理由,而SP是保存代码的最佳位置。

您可能还需要添加.net代码,以便人们可以检查查询中的差异。最好的做法是包装在SP中工作的代码,并从中调用该SP。NET@JiggsJedi当然请看上面。也谢谢弗拉基米尔。一旦我能证明这至少可以嵌入,我就会这样做。当分组(mh.PositionId)=0然后最大值(ISNULL(mh.CurrentOfficeHolder,'NULL'))时,你缺少
,CurrentOfficeHolder=CASE,那么你现在能做的最简单的事情就是从.NET中删除代码并从SSMS中插入代码