如果我有来自CTE的输出数据集,看起来像
PERIOD FT GROUP DEPT VALUE 1 Actual KINDER MATH 200 2 Actual KINDER MATH 363 3 Actual KINDER MATH 366 1 Budget KINDER MATH 457 2 Budget KINDER MATH 60 3 Budget KINDER MATH 158 1 Actual HIGHSCH ENGLISH 456 2 Actual HIGHSCH ENGLISH 745 3 Actual HIGHSCH ENGLISH 125 1 Budget HIGHSCH ENGLISH 364 2 Budget HIGHSCH ENGLISH 158 3 Budget HIGHSCH ENGLISH 200 6 Budget HIGHSCH ENGLISH 502 7 Budget HIGHSCH ENGLISH 650 1 Actual COLL ENGLISH 700 2 Actual COLL ENGLISH 540 3 Actual COLL ENGLISH 160 1 Budget COLL ENGLISH 820 2 Budget COLL ENGLISH 630 3 Budget COLL ENGLISH 800
但我想添加一个列,其中包含每个组的标识符(分组由FT,Group和Dept组成),如下所示:
PERIOD FT GROUP DEPT VALUE GroupID 1 Actual KINDER MATH 200 1 2 Actual KINDER MATH 363 1 3 Actual KINDER MATH 366 1 1 Budget KINDER MATH 457 2 2 Budget KINDER MATH 60 2 3 Budget KINDER MATH 158 2 1 Actual HIGHSCH ENGLISH 456 3 2 Actual HIGHSCH ENGLISH 745 3 3 Actual HIGHSCH ENGLISH 125 3 1 Budget HIGHSCH ENGLISH 364 4 2 Budget HIGHSCH ENGLISH 158 4 3 Budget HIGHSCH ENGLISH 200 4 1 Budget HIGHSCH ENGLISH 502 5 2 Budget HIGHSCH ENGLISH 650 5 3 Budget HIGHSCH ENGLISH 336 5 1 Actual COLL ENGLISH 700 6 2 Actual COLL ENGLISH 540 6 3 Actual COLL ENGLISH 160 6 1 Budget COLL ENGLISH 820 7 2 Budget COLL ENGLISH 630 7 3 Budget COLL ENGLISH 800 7
请知道怎么办吗?
编辑: 我觉得这个方向的东西可能有用
SELECT *,
CASE WHEN FT = 'Actual' THEN <something_incremental_to_do_with_row_num> OVER (PARTITION DEPT, GROUP, FT) END as GROUPID
FROM cte
我不能在OVER子句中使用ORDER BY,因为我在2008年
答案 0 :(得分:0)
很难说没有看到查询的SQL,但我认为'row_number()([某些字段]分区)'的变体会给你这个。你看过那个吗?
这个现有问题可能会为您提供所需: How to add sequence number for groups in a SQL query without temp tables
答案 1 :(得分:0)
How to return a incremental group number per group in SQL
此外,您可以通过连接字段为每个组创建unique_id。例如,如果您想按FT,GROUP和DEPT分组,那么只需将它们放在一起即可。例如:
SELECT *,
CAST(FT AS VARCHAR) +
CAST([GROUP] AS VARCHAR) +
CAST(DEPT AS VARCHAR) AS UNIQUE_ID
FROM MYTABLE
如果您想使用它一段时间来执行更复杂的查询,那么只需将其放入临时表:
SELECT *,
CAST(FT AS VARCHAR) +
CAST([GROUP] AS VARCHAR) +
CAST(DEPT AS VARCHAR) AS UNIQUE_ID
INTO #MYTEMPTABLE
FROM MYTABLE
如果要加入的字段中有不同的数据类型,则只需要CAST功能。最好保持它以避免任何不必要的麻烦。希望这会有所帮助。