我正在处理一个从我的数据库中检索某些值的存储过程。
我能够获得我需要的价值,但是我很难找到如何以我需要的方式订购它们。
以下是我想要实现的目标。我已经有了表属性(左),需要通过在属性上运行SELECT来创建表newProperties。
请注意:
答案 0 :(得分:0)
我认为这应该是SELECT语句的起点:
select
p.genericID,
p68.Value as ValueTypeId68,
p80.Value as ValueTypeId80
from partials p
join partialsProps p68
on p.genericId = p68.genericId
and p68.valueTypeID = 68
join partialsProps p80
on p.genericId = p80.genericId
and p80.valueTypeID = 80
您可以在其上添加@cycle
和@clientAccountID
条件。
答案 1 :(得分:0)
列值valueID的68和80是唯一可能的值吗?如果是这样,那么w0lf提供的答案应该适合你,虽然我不会说它是唯一的解决方案。
但是,如果除了60和80之外还有valueTypeID的多个值,那么我想在此提出一个解决方案。
我假设您在列值中有数字和非数字值,但您遇到的问题是数字和非数字值汇集在一个列中,因此您希望将它们分开。这是我想象的场景。
注意:如果这不能为您提供满意的解决方案,请详细提供该方案。
-- Create table as you have provided in the question
CREATE TABLE #partials
([genericID] int);
INSERT INTO #partials ([genericID])
VALUES (11),(12),(13),(14);
CREATE TABLE #partialsProps
([genericID] int, [valueTypeID] int, [Value] varchar(1));
-- Insert values similar
INSERT INTO #partialsProps
([genericID], [valueTypeID], [Value])
VALUES
(11, 68, 'A'),
(11, 80, '1'),
(12, 68, 'Z'),
(12, 80, '2'),
(13, 68, 'B'),
(13, 80, '3'),
(14, 68, 'Y'),
(14, 80, '4')
select r1.value as Val1,r2.Value as Val2 from
(select pp.genericID,value, valueTypeID from #partialsProps pp join #partials p on
p.genericID = pp.genericID
where ISNUMERIC(Value) = 0 group by valueTypeID, value ,pp.genericID) r1
join
(select pp.genericID,value, valueTypeID from #partialsProps pp join #partials p on
p.genericID = pp.genericID
where ISNUMERIC(Value) = 1 group by valueTypeID, value ,pp.genericID) r2
on r1.genericID = r2.genericID ;
drop table #partials;
drop table #partialsProps;