【发布时间】:2021-09-09 18:25:45
【问题描述】:
我有一张表 ListofString 包含这些列:
parent_id
parent_prop_id
element_value
我的数据看起来像这样(为简单起见,我排除了大部分数据)
parent_id parent_prop_id element_value
------------------------------------------
C4236016 BEAE885B acw1
C4236016 BEAE885B acw2
C4236016 BEAE885B acw3
C4236016 BEAE885B acw11
C4236016 1DC045A5 mmw1
C4236016 1DC045A5 mmw2
C4236016 1DC045A5 mmw3
在一个选择中,我想得到这个:
parent_id String1 String2
------------------------------------------------
C4236016 mmw1|mmw2|mmw3 acw1|acw2|acw3|acw11
相反,我得到了这个:
parent_id String1 String2
------------------------------------------------
C4236016 acw1|acw2|acw3|acw11
C4236016 mmw1|mmw2|mmw3
这是我尝试过的:
SELECT
LOS0.parent_id,
String1 = CASE
WHEN LOS0.parent_prop_id = '1DC045A5'
THEN STUFF((SELECT '|' + LOS1.element_value
FROM ListOfString LOS1
WHERE LOS0.parent_prop_id = LOS1.parent_prop_id
ORDER BY LOS0.parent_prop_id
FOR XML PATH('')), 1, LEN(','), '')
ELSE ''
END,
String2 = CASE
WHEN LOS0.parent_prop_id = 'BEAE885B'
THEN STUFF((SELECT '|' + LOS1.element_value
FROM ListOfString LOS1
WHERE LOS0.parent_prop_id = LOS1.parent_prop_id
ORDER BY LOS0.parent_prop_id
FOR XML PATH('')), 1, LEN(','), '')
ELSE ''
END
FROM
ListOfString LOS0
GROUP BY
LOS0.parent_id, LOS0.parent_prop_id
有什么想法可以将这两行包含在同一行中吗? 如果我通过 parent_prop_id 删除该组,我会收到以下消息: 列 'ListOfString.parent_prop_id' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
谢谢
抱歉,我的格式不正确。
马丁
【问题讨论】:
标签: sql-server tsql group-by