Sql 如何获取ID级别的数据
我有一个名为ID_info的表,示例数据为:Sql 如何获取ID级别的数据,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我有一个名为ID_info的表,示例数据为: Info_ID Type Desc 1 S Secondary 1 V Vertical 2 U Uniform 3 I Industry 3 F First 所以我需要一个列,告诉我不同的ID。计数的第一行应为数字,后续行应为空,因此我的输出应为: Info_ID Type Desc Count_
Info_ID Type Desc
1 S Secondary
1 V Vertical
2 U Uniform
3 I Industry
3 F First
所以我需要一个列,告诉我不同的ID。计数的第一行应为数字,后续行应为空,因此我的输出应为:
Info_ID Type Desc Count_Info_ID
1 S Secondary 2
1 V Vertical NULL
2 U Uniform 1
3 I Industry 2
3 F First NULL
如果顺序不重要,那么应该这样做:
;WITH CTE AS
(
SELECT *,
COUNT(*) OVER(PARTITION BY Info_ID) Count_Info_ID,
ROW_NUMBER() OVER(PARTITION BY Info_ID ORDER BY Info_ID) RN
FROM YourTable
)
SELECT Info_ID,
[Type],
[Desc],
CASE WHEN RN = 1 THEN Count_Info_ID END Count_Info_ID
FROM CTE
让你试试
结果是:
╔═════════╦══════╦═══════════╦═══════════════╗
║ Info_ID ║ Type ║ Desc ║ Count_Info_ID ║
╠═════════╬══════╬═══════════╬═══════════════╣
║ 1 ║ S ║ Secondary ║ 2 ║
║ 1 ║ V ║ Vertical ║ NULL ║
║ 2 ║ U ║ Uniform ║ 1 ║
║ 3 ║ I ║ Industry ║ 2 ║
║ 3 ║ F ║ First ║ NULL ║
╚═════════╩══════╩═══════════╩═══════════════╝
如果顺序不重要,那么应该这样做:
;WITH CTE AS
(
SELECT *,
COUNT(*) OVER(PARTITION BY Info_ID) Count_Info_ID,
ROW_NUMBER() OVER(PARTITION BY Info_ID ORDER BY Info_ID) RN
FROM YourTable
)
SELECT Info_ID,
[Type],
[Desc],
CASE WHEN RN = 1 THEN Count_Info_ID END Count_Info_ID
FROM CTE
让你试试
结果是:
╔═════════╦══════╦═══════════╦═══════════════╗
║ Info_ID ║ Type ║ Desc ║ Count_Info_ID ║
╠═════════╬══════╬═══════════╬═══════════════╣
║ 1 ║ S ║ Secondary ║ 2 ║
║ 1 ║ V ║ Vertical ║ NULL ║
║ 2 ║ U ║ Uniform ║ 1 ║
║ 3 ║ I ║ Industry ║ 2 ║
║ 3 ║ F ║ First ║ NULL ║
╚═════════╩══════╩═══════════╩═══════════════╝
SQL数据本质上是未排序的…是否有任何内容(除了显示的“顺序”之外)也就是说,哪条记录是第一条/第二条/第三条?你能将这种格式保留在前端,而不是试图通过sql强制执行吗?@第十二条只要计数是,顺序就无关紧要。sql数据中的任何一条都是天生未排序的……是否有任何内容(除了显示的“顺序”之外)也就是说,哪条记录是第一条/第二条/第三条?你能将这种格式保留在前端,而不是通过sql强制执行吗?只要计数是行中的任何一条,顺序就不重要了