首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在TOP / Server中使用TOP按错误分组

在TOP / Server中使用TOP按错误分组
EN

Stack Overflow用户
提问于 2017-02-04 08:54:00
回答 3查看 75关注 0票数 1

我的Server数据库中有这个表。

代码语言:javascript
复制
CREATE TABLE [dbo].[CODIFICHE_FARMACI]
(
    [Principio_Attivo] [nvarchar](250) NULL,
    [LanguageID] [nvarchar](50) NOT NULL,
    [Codice] [nvarchar](50) NOT NULL,
    [Confezione_rif] [nvarchar](1000) NULL,
    [ATC] [nvarchar](100) NULL,
    [Farmaco] [nvarchar](1000) NULL,
    [Confezione] [nvarchar](1000) NULL,
    [Ditta] [nvarchar](100) NULL,

    CONSTRAINT [PK_CODIFICHE_FARMACI] 
        PRIMARY KEY CLUSTERED ([LanguageID] ASC, [Codice] ASC)
)

现在,我希望从这个表中提取Farmaco列中的前60个记录组。

所以我写了这个查询:

代码语言:javascript
复制
SELECT TOP 60 * 
FROM CODIFICHE_FARMACI 
GROUP BY Farmaco

但我有个奇怪的错误:

La colonna 'CODIFICHE_FARMACI.Principio_Attivo‘nonèvalida nell’‘elenco di selezione perchénonèinclusa néin una funzione di selezione nénella clausola组。

英文本:

列'CODIFICHE_FARMACI.Principio_Attivo‘在select列表中无效,因为它既没有包含在聚合函数中,也没有包含在GROUP BY子句中。

编辑:通过这个查询,我得到了这个结果

如您所见,我复制了Farmaco列(有两次ABBA,ABESART)

编辑我想要的结果:

代码语言:javascript
复制
|FARMACO|
ABBA
ABESART
ABILIFY
EN

回答 3

Stack Overflow用户

发布于 2017-02-04 09:03:54

如果要选择前60个Farmaco值而只显示不同的值,则可以尝试使用SELECT DISTINCT

代码语言:javascript
复制
SELECT DISTINCT TOP 60 Farmaco 
FROM [dbo].[CODIFICHE_FARMACI]
ORDER BY Farmaco

请注意,如果您的记录确实是重复的,那么它就意味着您的数据没有规范化。可能只对某些列相同,而对其他列则不一样。

票数 3
EN

Stack Overflow用户

发布于 2017-02-04 09:10:48

试试这个:

代码语言:javascript
复制
SELECT Top 60
  a.Farmaco
  FROM [dbo].[CODIFICHE_FARMACI] A
GROUP BY A.Farmaco 
票数 0
EN

Stack Overflow用户

发布于 2017-02-05 11:39:11

代码语言:javascript
复制
SELECT TOP 60 cf.Farmaco
FROM CODIFICHE_FARMACI AS cf
GROUP BY cf.Farmaco
ORDER BY cf.Farmaco

当您使用GROUP时,您将从列/s得到一个不同的值,后面跟着GROUP BY (在您的例子中是Farmaco)。

首先执行FROM语句,然后使用CODIFICHE_FARMACI别名cf检索的数据集将由cf.Farmaco分组。

SELECT命令将只检索cf.Farmaco列值,而ordered列值将按顺序升序(因为ordered表达式具有默认的升序)。在最后,前60只过滤数据集中的60行。

当您指定SELECT *并且您有GROUP BY子句时,您将遇到一个问题,因为在GROUP中写入的每一列都必须位于SELECT语句处。

还可以向SELECT语句中添加聚合函数(如SUM、MIN、MAX等)的结果的列。

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

https://stackoverflow.com/questions/42038407

复制
相关文章

相似问题

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