Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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
Sql 如何将我的order by字段添加到此select语句中?_Sql_Sql Server - Fatal编程技术网

Sql 如何将我的order by字段添加到此select语句中?

Sql 如何将我的order by字段添加到此select语句中?,sql,sql-server,Sql,Sql Server,为了避免“如果指定了select DISTINCT,则ORDER BY items必须出现在select列表中”,我需要在顶部的select语句中添加AssessmentSuperSet.Deadline。我应该在哪里做这个?非常感谢您的帮助。谢谢 DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF( (SELECT distinct ',' + QUOTENAME(Assessme

为了避免“如果指定了select DISTINCT,则ORDER BY items必须出现在select列表中”,我需要在顶部的select语句中添加AssessmentSuperSet.Deadline。我应该在哪里做这个?非常感谢您的帮助。谢谢

DECLARE @cols AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX)

select @cols = STUFF(
    (SELECT distinct ',' + QUOTENAME(AssessmentSuperSet.Title) 
            from AssessmentSuperSet inner join AssessmentSet on AssessmentSuperSet.SuperSetID =     AssessmentSet.SuperSetID
            where ClassID = '8KF/En 14/15' order by AssessmentSuperSet.Deadline ASC
    FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)') 
,1,1,'')

set @query = 'SELECT StudentID, FName, SName, ' + @cols + ' from 
     (
        select KS3Assessments.StudentID,
          Pupils.FName,
          Pupils.SName,
          KS3Assessments.NCLevel,
          AssessmentSuperSet.Title
        from KS3Assessments inner join Pupils on KS3Assessments.StudentID = Pupils.StudentID
                            inner join AssessmentSuperSet on KS3Assessments.SuperSetID = AssessmentSuperSet.SuperSetID                              
        where Pupils.GroupDesignation = ''8KF/En 14/15''
    ) x
    pivot (max(NCLevel) for Title in (' + @cols + ') ) p '

execute(@query)

请尝试使用group by子句,而不是distinct:

select @cols = STUFF(
    (SELECT ',' + QUOTENAME(AssessmentSuperSet.Title) 
            from AssessmentSuperSet inner join AssessmentSet on AssessmentSuperSet.SuperSetID =     AssessmentSet.SuperSetID
            where ClassID = '8KF/En 14/15' 
          group by AssessmentSuperSet.title, AssessmentSuperSet.Deadline
          order by AssessmentSuperSet.Deadline ASC
    FOR XML PATH(''), TYPE
    ).value('.', 'NVARCHAR(MAX)') 
,1,1,'')

set @query = 'SELECT StudentID, FName, SName, ' + @cols + ' from 
     (
        select KS3Assessments.StudentID,
          Pupils.FName,
          Pupils.SName,
          KS3Assessments.NCLevel,
          AssessmentSuperSet.Title
        from KS3Assessments inner join Pupils on KS3Assessments.StudentID = Pupils.StudentID
                            inner join AssessmentSuperSet on KS3Assessments.SuperSetID = AssessmentSuperSet.SuperSetID                              
        where Pupils.GroupDesignation = ''8KF/En 14/15''
    ) x
    pivot (max(NCLevel) for Title in (' + @cols + ') ) p '

execute(@query)

由于您没有提供任何合适的测试数据,我没有尝试过。

使用DISTINCT通常是您的设计错误的一个指标。就是这样!谢谢。