如果存在重复行,如何在sql中显示空白记录
我的SQL查询结果 EmployeeID EmployeeName Department 1 John Sales 2 Robert Sales 3 Sudhir Sales 4 Roj Development 员工ID员工姓名部门 1约翰销售部 2罗伯特销售部 3苏迪尔销售 4 Roj开发 输出应该是 EmployeeID EmployeeName Department 1 John Sales 2 Robert 3 Sudhir 4 Roj Development 员工ID员工姓名部门 1约翰销售部 2罗伯特 3苏迪尔 4 Roj开发 您可以这样做:如果存在重复行,如何在sql中显示空白记录,sql,sql-server,Sql,Sql Server,我的SQL查询结果 EmployeeID EmployeeName Department 1 John Sales 2 Robert Sales 3 Sudhir Sales 4 Roj Development 员工ID员工姓名部门 1约翰销售部 2罗伯特销售部 3苏迪尔销售 4 Roj开发 输出应该是 Em
;WITH CTE
AS
(
SELECT EmployeeID, EmployeeName, Department,
ROW_NUMBER() OVER(PARTITION BY Department ORDER BY(SELECT 1)) rownum
FROM table1
)
SELECT
EmployeeId,
EmployeeName,
CASE rownum
WHEN 1 THEN Department
ELSE ''
END AS Department
FROM CTE
ORDER BY EmployeeID;
注意:尽量不要在SQL中执行这些格式化操作。SQL与格式无关。您可以这样做:
;WITH CTE
AS
(
SELECT EmployeeID, EmployeeName, Department,
ROW_NUMBER() OVER(PARTITION BY Department ORDER BY(SELECT 1)) rownum
FROM table1
)
SELECT
EmployeeId,
EmployeeName,
CASE rownum
WHEN 1 THEN Department
ELSE ''
END AS Department
FROM CTE
ORDER BY EmployeeID;
注意:尽量不要在SQL中执行这些格式化操作。SQL与格式无关。我建议您让SQL server提取数据,并让客户端/业务/报表层以正确的方式呈现数据。我建议您让SQL server提取数据,并让客户端/业务/报表层以正确的方式呈现数据。谢谢,我正在寻找sameYes,这很有帮助。我使用了两列:densite_RANK()OVER(ORDER BY(SELECT Department))作为'A',ROW_NUMBER()OVER(PARTITION BY Department ORDER BY Department)作为'B',然后在SELECT语句中使用:case when convert(varchar(5),[B])='1'然后convert(varchar(5),[A]),否则“end”NO.@Mahmoud Gamal这个命令在MYSQL上运行吗?我试图运行它,但它有错误。@kiLLua-不,它不会运行。Mysql没有SQL Server那样的行号功能,但还有其他解决方法可以实现同样的功能。但是,对于这个问题,我不建议在sql端对数据进行任何格式化,格式化应该在前端完成,而不是在sql中完成。因此,如果您想做同样的事情,请在前端而不是在sql中进行。只需正常选择数据,然后在前端将很容易按照您想要的方式格式化数据。我希望这会有帮助。谢谢,我在找sameYes,它很有用。我使用了两列:densite_RANK()OVER(ORDER BY(SELECT Department))作为'A',ROW_NUMBER()OVER(PARTITION BY Department ORDER BY Department)作为'B',然后在SELECT语句中使用:case when convert(varchar(5),[B])='1'然后convert(varchar(5),[A]),否则“end”NO.@Mahmoud Gamal这个命令在MYSQL上运行吗?我试图运行它,但它有错误。@kiLLua-不,它不会运行。Mysql没有SQL Server那样的行号功能,但还有其他解决方法可以实现同样的功能。但是,对于这个问题,我不建议在sql端对数据进行任何格式化,格式化应该在前端完成,而不是在sql中完成。因此,如果您想做同样的事情,请在前端而不是在sql中进行。只需正常选择数据,然后在前端将很容易按照您想要的方式格式化数据。我希望这有帮助。