首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择未包含在分组依据中的列

问选择未包含在分组依据中的列
EN

Stack Overflow用户
提问于 2014-07-25 02:38:13
回答 2查看 117关注 0票数 0

我有以下SQL Server脚本:

代码语言:javascript
复制
SELECT
    cicmpy.cmp_name as Naam
    ,c2.cmp_name as Arts
    ,cicmpy.textfield1 as Voornaam
    ,items.UserField_02 as Label
    ,absences.HID
FROM
    Absences
INNER JOIN 
    cicmpy ON Absences.CustomerID = cicmpy.cmp_wwn
INNER JOIN 
    cicmpy as c2 ON Absences.FreeGuidField_01 = c2.cmp_wwn
INNER JOIN 
    Items ON absences.ItemCode = items.ItemCode
WHERE 
    Absences.Type = 86

我需要SELECT语句中的所有列,但只需要唯一的列。实际上,列HID是一个惟一的列,因此对它进行分组将返回所有行。我试着用CTE实现我的目标,但没有成功。如何获取除HID列以外的所有基于列的唯一记录?

EN

回答 2

Stack Overflow用户

发布于 2014-07-25 02:49:05

使用SELECT DISTINCT

代码语言:javascript
复制
SELECT DISTINCT
 cicmpy.cmp_name as Naam
,c2.cmp_name as Arts
  ,cicmpy.textfield1 as Voornaam
  ,items.UserField_02 as Label
FROM Absences
  INNER JOIN cicmpy
    ON Absences.CustomerID = cicmpy.cmp_wwn
inner join cicmpy as c2
   on Absences.FreeGuidField_01 = c2.cmp_wwn
inner join Items
   on absences.ItemCode = items.ItemCode
where Absences.Type = 86

或

如果您需要一些HID,则需要选择要使用的聚合类型(MIN或MAX)

代码语言:javascript
复制
SELECT 
   cicmpy.cmp_name as Naam
  ,c2.cmp_name as Arts
  ,cicmpy.textfield1 as Voornaam
  ,items.UserField_02 as Label
  , MAX(Absences.HID) as MAX_HID
  , MIN(Absences.HID) as MIN_HID
FROM Absences
  INNER JOIN cicmpy
    ON Absences.CustomerID = cicmpy.cmp_wwn
inner join cicmpy as c2
   on Absences.FreeGuidField_01 = c2.cmp_wwn
inner join Items
   on absences.ItemCode = items.ItemCode
where Absences.Type = 86
GROUP BY 
   cicmpy.cmp_name
  ,c2.cmp_name
  ,cicmpy.textfield1
  ,items.UserField_02
票数 1
EN

Stack Overflow用户

发布于 2014-07-25 02:46:27

希望这就是你想要的:

代码语言:javascript
复制
;WITH cte AS
(
SELECT

 cicmpy.cmp_name as Naam
,c2.cmp_name as Arts
  ,cicmpy.textfield1 as Voornaam
  ,items.UserField_02 as Label
  ,absences.HID
  ,ROW_NUMBER() OVER (PARTITION BY cicmpy.cmp_name, c2.cmp_name, cicmpy.textfield1, items.UserField_02 ORDER BY absences.HID DESC) AS rn
FROM
  Absences
  INNER JOIN cicmpy
    ON Absences.CustomerID = cicmpy.cmp_wwn
inner join cicmpy as c2
on Absences.FreeGuidField_01 = c2.cmp_wwn
inner join Items
on absences.ItemCode = items.ItemCode
where Absences.Type = 86   
)
SELECT *
FROM cte
WHERE rn = 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24941493

复制
相关文章

相似问题

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