Sql server SQL-列不是字母顺序的

Sql server SQL-列不是字母顺序的,sql-server,tsql,dynamic-sql,Sql Server,Tsql,Dynamic Sql,列不按字母顺序排列,因为我不能将“order by”与“distinct”一起使用。请帮助我 我的问题是: DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); SET @cols = STUFF((SELECT distinct ',MAX(CASE WHEN KullaniciAdi = ''' + p.KullaniciAdi + ''' THEN KisiAdi END) AS ' + QUOTENAME

列不按字母顺序排列,因为我不能将“order by”与“distinct”一起使用。请帮助我

我的问题是:

DECLARE @cols AS NVARCHAR(MAX), 
        @query AS NVARCHAR(MAX); 
SET @cols = STUFF((SELECT distinct ',MAX(CASE WHEN KullaniciAdi = '''  + p.KullaniciAdi + ''' THEN KisiAdi END) AS '  + QUOTENAME(p.KullaniciAdi) 
FROM Populer p FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)')  ,1,1,'') 
set @query = 'SELECT top 100 ' + @cols + ' FROM  (   SELECT KullaniciAdi,KisiAdi,ROW_NUMBER() OVER (PARTITION BY KullaniciAdi ORDER BY EklenmeTarihi) AS RowNum FROM Populer ) x GROUP BY RowNum ' 
EXECUTE(@query)
结果:


当然可以。关键是用
分组方式
替换
不同的
。然后使用“订购依据”:

SET @cols = STUFF((SELECT ', MAX(CASE WHEN KullaniciAdi = '''  + p.KullaniciAdi + ''' THEN KisiAdi END) AS '  + QUOTENAME(p.KullaniciAdi) 
                   FROM Populer p
                   GROUP BY KullaniciAdi
                   ORDER BY p.KullaniciAdi
                   FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)'
                  ), 1, 1, ''
                 ) ;

你当然可以。关键是用
分组方式
替换
不同的
。然后使用“订购依据”:

SET @cols = STUFF((SELECT ', MAX(CASE WHEN KullaniciAdi = '''  + p.KullaniciAdi + ''' THEN KisiAdi END) AS '  + QUOTENAME(p.KullaniciAdi) 
                   FROM Populer p
                   GROUP BY KullaniciAdi
                   ORDER BY p.KullaniciAdi
                   FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)'
                  ), 1, 1, ''
                 ) ;

解决此问题的一种方法是使查询成为派生表:

SELECT * FROM 
  (SELECT DISTINCT {the rest of your current query}) t
ORDER BY SomeColumn

解决此问题的一种方法是使查询成为派生表:

SELECT * FROM 
  (SELECT DISTINCT {the rest of your current query}) t
ORDER BY SomeColumn

问题是什么?我希望按字母顺序对列进行排序请记住,您可以对整行进行排序,而不仅仅是单列。当
选择DISTINCT
时,只能按顺序使用选定的列。很有意义。我创建的列的名称应该是可能的。有什么问题吗?我希望按字母顺序对列进行排序请记住,您可以对整行进行排序,而不仅仅是单列。当
选择DISTINCT
时,只能按顺序使用选定的列。很有道理。我创建的列的名称应该是可能的。我得到了这个错误:“如果指定了select DISTINCT,则ORDER BY items必须出现在select列表中。”@HasanKaanTURAN。我懂了。您可以使用
分组方式
解决此问题。我更新了答案。@HasanKaanTURAN。您的意思是,
分组依据
没有解决问题?@GordonLinoff Yes我收到此错误:“如果指定了select DISTINCT,则ORDER BY项目必须出现在选择列表中。”@HasanKaanTURAN。我懂了。您可以使用
分组方式
解决此问题。我更新了答案。@HasanKaanTURAN。你是说分组依据没有解决问题?@GordonLinoff是的,我的sql技能还不够。。你能帮我解决我的问题吗?我的sql技能还不够。。你能帮我解答一下我的问题吗?