首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择不同的错误

选择不同的错误
EN

Stack Overflow用户
提问于 2013-03-05 03:03:03
回答 2查看 240关注 0票数 0

我的数据库有这个问题。我的代码是:

代码语言:javascript
复制
 CREATE PROCEDURE [dbo].[test1]
    @den nchar(14) = ''         
 AS
 BEGIN  
   SET NOCOUNT ON;

   DECLARE @SQL AS varchar(3000) = ''   
   DECLARE @WHERE1 AS varchar(1000) = ''    
   DECLARE @ORDERBY1 AS varchar(1000) = ''

   SET @WHERE1 = @WHERE1 + ' WHERE [dbo].table2.sag=1 '

   IF (@den != '')      
      SET @WHERE1 = @WHERE1 + ' AND RIGHT(''0000000000''+CONVERT(VARCHAR(10),[dbo].table1_den_id1),10) +RIGHT(''0000''+CONVERT(VARCHAR(4),[dbo].table1_den_id2),4) = ''' + RIGHT('00000000000000'+RTRIM(@den),14) + ''''

   SET @ORDERBY1 = @ORDERBY1 + 'GROUP BY [dbo].table2.item_barcord      
ORDER BY LEFT([dbo].table2.item_barcord,13) ASC'

   SET @SQL = @SQL + '      
          SELECT            
          DISTINCT          
          ''JAN'' + LEFT([dbo].table2.item_barcord,13) AS ''code'',             
          LEFT(MIN([dbo].table2.item_name),15) AS ''name''      
          FROM [dbo].table1         
          INNER JOIN [dbo].table2 ON [dbo].table1.id = [dbo].table2.id          '           + @WHERE1       
          + @ORDERBY1

   DECLARE @RET AS numeric(3,0) = 0

   EXEC(@SQL)   
   SET @RET = @@ROWCOUNT

   RETURN @RET
END

但是,我得到了这个错误:

如果指定select DISTINCT,则按项排序必须出现在选择列表中。

请帮帮我。

EN

回答 2

Stack Overflow用户

发布于 2013-03-05 03:08:49

尝试更改这一行:

代码语言:javascript
复制
SET @ORDERBY1 = @ORDERBY1 + 'GROUP BY [dbo].table2.item_barcord     
ORDER BY LEFT([dbo].table2.item_barcord,13) ASC'

致:

代码语言:javascript
复制
SET @ORDERBY1 = @ORDERBY1 + 'GROUP BY [dbo].table2.item_barcord     
ORDER BY LEFT([dbo].table2.item_barcord,13), 2 ASC'

更多:选择DISTINCT和ORDER

票数 1
EN

Stack Overflow用户

发布于 2013-03-05 03:11:28

我认为您应该更改查询,这样就不需要select distinct

代码语言:javascript
复制
      SELECT ''JAN'' + LEFT([dbo].table2.item_barcord,13) AS ''code'',  
      . . . 
      group by LEFT([dbo].table2.item_barcord,13)

那么order by就能正常工作了。额外的好处是,查询将更有意义--聚合中的select distinct有点难以理解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15215080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档