SQL Server 2005:在';分组依据';结果
我有一组由一组结果运行的报告,现在运行时,它看起来像:SQL Server 2005:在';分组依据';结果,sql,database,sql-server-2005,Sql,Database,Sql Server 2005,我有一组由一组结果运行的报告,现在运行时,它看起来像: Column_1 1 2 3 代码: 但我希望结果集如下所示: Column_1 1 2 3 这可能吗?试试这个 选择 第1列 ,其他资料, 字符(13)+字符(10) 从…起 几张桌子 分组 第1列答案是肯定的,这可能是一个肮脏的黑客行为。但是我认为,这在SQL之外处理得更好。SQL用于数据,应用层用于格式化。(根据你在哪里处理结果,问一个新问题可能是有益的) 为了做到这一点,您需要使用空数据复制结果集(这意味着您需要确保所有
Column_1
1
2
3
代码:
但我希望结果集如下所示:
Column_1
1
2
3
这可能吗?试试这个
选择
第1列
,其他资料,
字符(13)+字符(10)
从…起
几张桌子
分组
第1列
答案是肯定的,这可能是一个肮脏的黑客行为。但是我认为,这在SQL之外处理得更好。SQL用于数据,应用层用于格式化。(根据你在哪里处理结果,问一个新问题可能是有益的)
为了做到这一点,您需要使用空数据复制结果集(这意味着您需要确保所有列都是varchar)
您需要有一种排序结果集的方法,以确保空白行是交替的(下面是SORT1和SORT2)
<>如果您的查询特别昂贵,您可能需要考虑使用临时表,而不是选择两次,第二次不使用任何数据。不幸的是,这意味着我必须对任何不受函数影响的列进行分组,并且仍然显示为示例1。感谢您,这几乎可以正常工作,但OtherInfo列不被接受,因为它不在聚合函数中。您需要将其包括在分组中或者将其作为一个聚合列包含,而不查看您的数据或了解您的需求,我不确定是哪一个。
Column_1
1
2
3
SELECT Column1, OtherInfo
FROM ( SELECT Column_1 = CAST(Column_1 AS NVARCHAR),
OtherInfo = CAST(Other_Info AS NVARCHAR),
Sort1 = ROW_NUMBER() OVER(ORDER BY Column_1),
Sort2 = 1
FROM Some_Table
GROUP BY Column_1, OtherInfo
UNION ALL
SELECT Column_1 = N'',
OtherInfo = N'',
Sort1 = ROW_NUMBER() OVER(ORDER BY Column_1),
Sort2 = 2
FROM Some_Table
GROUP BY Column_1, OtherInfo
) d
ORDER BY Sort1, Sort2;