SQL Server:仅返回字段值的第一个实例

时间:2016-08-31 11:38:31

标签: sql-server

我正在使用SQL Server 2014 Management Studio,在查询窗口中写作。

我们知道我们可以使用SQL查询获取所有返回的数据集,但它们总是作为整行返回。

是否可以只返回字段的第一个值以及该行中的其他字段?

以下是我在一个非常简单的查询中返回的内容,以及我想要返回的内容。所需的输出注定要在Firefly网页上发布。

enter image description here

谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个

DECLARE @Tbl TABLE (ID INT, Name NVARCHAR(50))
INSERT INTO @Tbl        
VALUES  
(300, 'joe'),
(300, 'Fred'),
(300, 'Alan'),
(301, 'Margaret'),
(301, 'Bill'),
(301, 'John')

SELECT
    IIF(ID = LAG(ID) OVER (ORDER BY ID), '', CAST(ID AS VARCHAR(50))) AS NID,
    Name
FROM
    @Tbl
ORDER BY ID

结果:

NID Name
300 joe
    Fred
    Alan
301 Margaret
    Bill
    John

答案 1 :(得分:0)

如果您想要重复ID的空格,则需要将ID转换为字符串。您可以尝试使用LAG

select case when Id=lag(ID) over(order by ID) then '' else cast(Id as varchar(max)) end as ID,Name from Your_Table

示例:

create table #Tab1(Id int,Name nvarchar(max))

insert into #Tab1(Id,Name) Values
(301,'A'),
(301,'B'),
(301,'C'),
(302,'A'),
(302,'B'),
(303,'B'),
(304,'B')


select case when Id=lag(Id) over(order by id) then '' else cast(Id as varchar) end as ID,Name from #Tab1