有没有办法在 SQL Server Management Studio (SSMS) 中分隔查询结果?
Is there a way to separate query results in SQL Server Management Studio (SSMS)?
我得到了一个简单的查询,其中 return 来自 OrderLine
table 的结果。有没有一种方法可以在视觉上分隔查询结果以使其更易于阅读,就像此处显示的图像所示?
SELECT [OrderNo], [LineNo]
FROM [OrderLine]
结果:
你不能直接这样做。也许添加一个新列,该列要么为空,要么其中有一个值,以便它交替出现。
像这样:
select ..., case when rank() over (order by OrderNO) % 2 then 'XXX' else null end
from....
%2 是一个 'modulo' 运算符...
您可以像这样执行多个查询:
DECLARE @i int = 1
DECLARE @OrderNo
DECLARE @OrderNos TABLE (
Idx smallint Primary Key IDENTITY(1,1)
, OrderNo int
)
INSERT @OrderNos
SELECT distinct [OrderNo] FROM [OrderLine]
WHILE (@i <= (SELECT MAX(idx) FROM @employee_table))
BEGIN
SET @OrderNo = (SELECT [OrderNo] FROM [OrderNos] WHERE [Idx] = @i)
SELECT [OrderNo], [LineNo]
FROM [OrderLine]
WHERE [OrderNo] = @OrderNo
SET @i = @i + 1
END
drop table if exists #OrderLine;
select object_id as OrderNo, abs(checksum(newid())) as [LineNo]
into #OrderLine
from sys.columns;
-- ... results to text (ctrl+T)?
select OrderNo, [LineNo],
case when lead(OrderNo, 1) over(partition by OrderNo order by OrderNo) = OrderNo then '' else replicate('-', 11) + char(10) end
from #OrderLine;
--inject NULL
select case when [LineNo] is null and flag=2 then null else TheOrderNo end as OrderNo, [LineNo]
from
(
select OrderNo AS TheOrderNo, [LineNo], 1 as flag
from #OrderLine
union all
select distinct OrderNo, NULL, 2
from #OrderLine
) as src
order by TheOrderNo, flag;
我得到了一个简单的查询,其中 return 来自 OrderLine
table 的结果。有没有一种方法可以在视觉上分隔查询结果以使其更易于阅读,就像此处显示的图像所示?
SELECT [OrderNo], [LineNo]
FROM [OrderLine]
结果:
你不能直接这样做。也许添加一个新列,该列要么为空,要么其中有一个值,以便它交替出现。 像这样:
select ..., case when rank() over (order by OrderNO) % 2 then 'XXX' else null end
from....
%2 是一个 'modulo' 运算符...
您可以像这样执行多个查询:
DECLARE @i int = 1
DECLARE @OrderNo
DECLARE @OrderNos TABLE (
Idx smallint Primary Key IDENTITY(1,1)
, OrderNo int
)
INSERT @OrderNos
SELECT distinct [OrderNo] FROM [OrderLine]
WHILE (@i <= (SELECT MAX(idx) FROM @employee_table))
BEGIN
SET @OrderNo = (SELECT [OrderNo] FROM [OrderNos] WHERE [Idx] = @i)
SELECT [OrderNo], [LineNo]
FROM [OrderLine]
WHERE [OrderNo] = @OrderNo
SET @i = @i + 1
END
drop table if exists #OrderLine;
select object_id as OrderNo, abs(checksum(newid())) as [LineNo]
into #OrderLine
from sys.columns;
-- ... results to text (ctrl+T)?
select OrderNo, [LineNo],
case when lead(OrderNo, 1) over(partition by OrderNo order by OrderNo) = OrderNo then '' else replicate('-', 11) + char(10) end
from #OrderLine;
--inject NULL
select case when [LineNo] is null and flag=2 then null else TheOrderNo end as OrderNo, [LineNo]
from
(
select OrderNo AS TheOrderNo, [LineNo], 1 as flag
from #OrderLine
union all
select distinct OrderNo, NULL, 2
from #OrderLine
) as src
order by TheOrderNo, flag;