SQL查询仅显示一个具有多条记录的字段

Posted

技术标签:

【中文标题】SQL查询仅显示一个具有多条记录的字段【英文标题】:SQL query for display one field only once which having multiple record 【发布时间】:2016-06-03 10:10:26 【问题描述】:
projName - percentage-
-----------------------
A        - 10        -
A        - 25        -
B        - 20        -
B        - 30        -

结果应该是

projName - percentage-
-----------------------
A        - 10        -
         - 25        -
B        - 20        -
         - 30        -

【问题讨论】:

请贴出样本数据,我们会更容易回答 ---------------------------------- 在表现层修复它。 (您在 SQL 中什么也不做。) 我同意@jarlh - 这在 SQL Server 中是一个糟糕的想法,这需要在您的表示层中完成。 sarkar:我下面这样除外,A 20 A 10 输出这样 A 20 - 10 【参考方案1】:

使用CASE Con​​dition和Row_number我们可以实现上面的输出

它完全基于您的示例数据

DECLARE @Table1 TABLE 
    (projName varchar(1), percentage int)
;

INSERT INTO @Table1
    (projName, percentage)
VALUES
    ('A', 10),
    ('A', 25),
    ('B', 20),
    ('B', 30)
;

Select CASE WHEN RN = 1 THEN projName ELSE NULL END projName, percentage from (
select projName, percentage,ROW_NUMBER()OVER(PARTITION BY projName ORDER BY (SELECT NULL))RN from @Table1 )T

在您的查询中,我修改了答案

Select CASE WHEN T.RN = 1 THEN T.projName ELSE NULL END projName, T.percentage FROM  (select 
i.invoice_id,
pr.name as projname ,
ROW_NUMBER()OVER(PARTITION BY projName ORDER BY (SELECT NULL))RN
from annexure a,
project pr,
sow s,
invoice i 
where pr.project_id = s.project_id 
and a.sow_id = s.sow_id 
and i.annexure_id = a.annexure_id 
group by pr.name,i.invoice_date,i.invoice_id )T

【讨论】:

欢迎@kiranbabu,如果它可以帮助你标记为答案 如果你想修改整个脚本,请在另一个问题中询问我已经根据示例数据给出了结果集,请正确对齐问题 为什么你没有标记你的答案..你能解释一下原因 @kiranbabu 请检查并让我知道您有任何疑虑,更多请在提问之前查看堆栈溢出规则和条例,因为您有很多反对票

以上是关于SQL查询仅显示一个具有多条记录的字段的主要内容,如果未能解决你的问题,请参考以下文章

sql 一个字段有多条数据 在一行显示

SQL - 如果一条记录具有特定值,则仅获取该记录,否则获取全部

SQL SELECT MAX() 返回多条记录

标记重复记录的T-SQL查询

sqlserver查询一对多的关系、合并多条记录的某字段值到一个字段

SQL 查询:计数,按月-年分组,具有多个日期字段