这可能只是一个星期五的事情,但我不知道如何将这些记录显示为一行,我的数据看起来像这样
PTaskID Part Requisition Service Requisition
394512 Yes No
394512 No Yes
我想要的是带有PTaskID
的1行,但是如果示例中有更多行,并且其中一行在Part Requisition
中有“是”,那么整个行值为Part Requisition
为是,同样的逻辑应适用于Service Requisition
。
任何帮助都会很棒PJD
CREATE TABLE [dbo].[Load](
[PTaskID] [int] NOT NULL,
[Part Requisition] [varchar](3) NOT NULL,
[Service Requisition] [varchar](3) NULL
) ON [PRIMARY]
INSERT INTO Load (PTaskID, [Part Requisition], [Service Requisition])
VALUES
(394512, 'Yes', 'No'),
(394512, 'No', 'Yes')
答案 0 :(得分:1)
试试这个
Select Ptaskid,
case when sum(case when [Part Requisition] = 'Yes' then 1 else 0 end)> 0 then 'Yes' else 'No' end 'Part Requisition',
case when sum(case when [Part Requisition] = 'Yes' then 1 else 0 end)> 0 then 'Yes' else 'No' end 'Service Requisition'
from [Load]
group by ptaskid
答案 1 :(得分:0)
鉴于“是”在“否”之后(*在大多数排序规则中),您可以GROUP
然后执行Max
,即
SELECT PTaskID, MAX([Part Requisition]) as [MaxPartRequisition],
MAX([Service Requisition]) as [MaxServiceRequisition]
FROM [Load]
GROUP BY PTaskID;
答案 2 :(得分:0)
这适用于任何整理和完美
Select Ptaskid,
convert(varchar,max(CONVERT(varbinary, [Part Requisition]))),
convert(varchar,max(CONVERT(varbinary, [Service Requisition])))
from [Load]
group by ptaskid