我有一张table作为图像。
TableName ColumnName RecordId Caption ImageType ROTId DetailRecordId
Table2 PAUTDPhoto_bin 1462 test PAUTPhotos 1041383 11480170
Table2 PAUTDPhoto_bin 1463 test1 PAUTPhotos 1041383 11480170
Table2 PAUTDPhoto_bin 1464 testing photo PAUTPhotos 1041383 11480170
Table1 ItemPhoto_bin 11480170 caption ItemPhoto 1041383 11480170
Table1 ItemPhoto_bin 11480171 test photo ItemPhoto 1041383 11480171
Table1 ItemPhoto_bin 11480172 description ItemPhoto 1041383 11480172
Table2 PAUTDPhoto_bin 1465 test PAUTPhotos 1041383 11480172
Table2 PAUTDPhoto_bin 1466 55 PAUTPhotos 1041383 11480172
我的输出选择查询将执行以下操作,
1.)需要按DetailRecordId和ColumnName进行GroupBy。
2.)在GroupBy之后,我想合并RecordId和Caption列。只需将2个值合并为一个值。
我的输出应该是,
TableName ColumnName RecordId Caption ImageType ROTId DetailRecordId
Table2 PAUTDPhoto_bin 1462$1463 test$test1 PAUTPhotos 1041383 11480170
Table2 PAUTDPhoto_bin 1464 testing photo PAUTPhotos 1041383 11480170
Table1 ItemPhoto_bin 11480170 caption ItemPhoto 1041383 11480170
Table1 ItemPhoto_bin 11480171 test photo ItemPhoto 1041383 11480171
Table1 ItemPhoto_bin 11480172 description ItemPhoto 1041383 11480172
Table2 PAUTDPhoto_bin 1465$1466 test$55 PAUTPhotos 1041383 11480172
**注:**我想将RecordId和Caption列与其中只有2个值的列连接起来。
2条答案
按热度按时间1l5u6lss1#
我们可以使用
LEAD
为任何给定的DetailRecordId
+ColumnName
对拉取下一行,并使用模(%
)仅抓取第一、第三、第五行,以此类推。工作示例in this fiddle。
重复的
OVER()
子句有点让我烦恼;在SQL Server 2022中,我们将能够通过新的“sharable”WINDOW
子句大大简化这一过程:gajydyqb2#
如果您的SQL版本支持
STRING_AGG
函数,可以尝试以下操作:对于其他版本:
请参阅demo。