关于我 我不是 SQL DBA 程序员。我假装是一个。因此,在设计复杂查询时,我是初学者/中间人,具体取决于它是什么。
到目前为止,这就是我想出的一个例子,向你展示我喜欢做什么。
尝试对此进行研究,我已经做到了这一点。
我想要的是基于两个因素 RecId、GroupedDataId 的动态行号。
没有陷入我正在做的事情。我希望这个简单的例子足以说明这一点。
因素 角色数量未知。RecId 可以有多个 GroupedDataId。GroupedDataIds 只能有一条记录。
所需输出
PCRID,GROuPedDataId, AnswerText, Question
1 1 Driver, Driver ROLE1
1 2 Driver, Driver ROLE2
1 33 Driver, Driver ROLE3
2 48 Driver, Driver ROLE1
2 55 Driver, Driver ROLE2
3 32 Driver, Driver ROLE1
3 33 Driver, Driver ROLE2
4 109 Driver, Driver ROLE1
创建的示例
Create Table #example
(
RecId int,
GroupedDataId int,
Question varChar(50),
AnswerText varchar(100)
)
INSERT INTO #example (RecId, GroupedDataId, Question, AnswerText)
SELECT 1, 1, 'ROLE', 'Driver, Driver'
UNION
SELECT 1, 2, 'ROLE', 'Driver, Driver'
UNION
SELECT 1, 33, 'ROLE', 'Driver, Driver'
UNION
SELECT 2, 55, 'ROLE', 'Driver, Driver'
UNION
SELECT 2, 48, 'ROLE', 'Driver, Driver'
UNION
SELECT 3, 32, 'ROLE', 'Driver, Driver'
UNION<BR>
SELECT 3, 33, 'ROLE', 'Driver, Driver'
UNION
SELECT 4, 109, 'ROLE', 'Driver, Driver'
SELECT RecId
, GroupedDataId
, AnswerText
, Question = 'ROLE' + CAST(ROW_NUMBER() OVER (ORDER BY (SELECT RecId), (SELECT GroupedDataId)) AS VARCHAR(max))
FROM #example
DROP TABLE #example
<P>
这就是我得到的。请注意,角色# 不会在新的 RecId,GroupedDataId 分组上重新开始。我希望order by会这样做,但它没有
PCRID,GROuPedDataId, AnswerText, Question
1 1 Driver, Driver ROLE1
1 2 Driver, Driver ROLE2
1 33 Driver, Driver ROLE3
2 48 Driver, Driver ROLE4
2 55 Driver, Driver ROLE5
3 32 Driver, Driver ROLE6
3 33 Driver, Driver ROLE7
4 109 Driver, Driver ROLE8
任何帮助将不胜感激......我花了一整天的时间让自己达到我的数据看起来像上面的例子的地步。
谢谢 :)