Привет, у меня есть запрос, который возвращает данные, как показано ниже
select
n.Key, np.value
from
Test1 np
join Test2 n on n.Key = np.Key
where
n.NodeKey = 10000002 && np.pKey in (4,6,7,10,12)
который возвращает данные, как показано ниже
Key value
-------- ------
10000002 2
10000002 0
10000002 2
10000002 True
10000002 1
Test2 - это таблица поиска, как показано ниже
Key PKey Value
---------------------------------------
10000002 4 2
10000002 6 0
10000002 7 2
10000002 10 True
10000002 12 1
Хотел изменить запрос, чтобы он возвращал данные, как показано ниже
NodeKey Value1 Value2 Value3 Value4 Value5
--------------------------------------------------
10000002 2 0 2 True 1
Не могли бы вы помочь мне с этим.
Сервер Google pivot sql.
Да @jarlh это и
Как же тогда управляется or? В ANSI SQL || означает объединение.
&& определенно не является T-SQL для AND. Просто попробуйте SELECT CASE WHEN 1 = 1 && 2 = 2 THEN 1 ELSE 0 END;, и вы получите синтаксическую ошибку. Я согласен с тем, что здесь предлагает @jarlh, я не думаю, что OP использует SQL Server.
Сервер @ user1494438 sql не поддерживает оператор || (ни оператор &&, если на то пошло). Все логические операторы в T-SQL - это английские слова.


Вы можете попробовать использовать sql-server pivot для горизонтального структурирования данных.
Попробуйте код ниже ..
Добавьте еще один столбец с помощью функции row_number () и сохраните весь результат во временной таблице
select
n.Key, np.value,
'Value'+convert(varchar(2),ROW_NUMBER() over (partition by [key] order by [key])) as tmpCol
into #tempTable --store result in tmp table
from
Test1 np
join Test2 n on n.Key = np.Key
where
n.NodeKey = 10000002 && np.pKey in (4,6,7,10,12)
затем используйте приведенный ниже сводный код.
select *
from
(
select [key], value,tmpCol
from #tempTable
) src
pivot
(
max(value)
for tmpCol in (value1,value2,value3,value4,value5)
) piv;
Вы можете использовать предложение pivot как:
with t as
(
select i.* from Test2 i
)
select [Key] as 'NodeKey',
[4] as 'Value1',
[6] as 'Value2',
[7] as 'Value3',
[10] as 'Value4',
[12] as 'Value5'
from t
pivot
(
max(Value) for PKey in ([4], [6], [7], [10], [12])
) q;
NodeKey Value1 Value2 Value3 Value4 Value5
-------- ------ ------ ------ ------ -------
10000002 2 0 2 True 1
Принимает ли SQL Server
&&? Имеется ввидуand?