Существует несколько способов преобразования данных из нескольких строк в столбцы. В SQL Server вы можете использовать функцию PIVOT
для преобразования данных из строк в столбцы:
select Firstname, Amount, PostalCode, LastName, AccountNumber
from
(
select value, columnname
from yourtable
) d
pivot
(
max(value)
for columnname in (Firstname, Amount, PostalCode, LastName, AccountNumber)
) piv;
См. Демо .
Если у вас есть неизвестное число columnnames
, которое вы хотите перенести, тогда вы можете использовать динамический SQL:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(ColumnName)
from yourtable
group by ColumnName, id
order by id
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = N'SELECT ' + @cols + N' from
(
select value, ColumnName
from yourtable
) x
pivot
(
max(value)
for ColumnName in (' + @cols + N')
) p '
exec sp_executesql @query;
См. Демо .
Если вы это сделаете не хотите использовать функцию PIVOT
, то вы можете использовать агрегатную функцию с выражением CASE
:
select
max(case when columnname = 'FirstName' then value end) Firstname,
max(case when columnname = 'Amount' then value end) Amount,
max(case when columnname = 'PostalCode' then value end) PostalCode,
max(case when columnname = 'LastName' then value end) LastName,
max(case when columnname = 'AccountNumber' then value end) AccountNumber
from yourtable
См. Демо .
Это также может быть выполнено с использованием нескольких соединений, но вам понадобится некоторый столбец, чтобы связать каждую из строк, которые у вас нет в ваших данных образца. Но основным синтаксисом будет:
select fn.value as FirstName,
a.value as Amount,
pc.value as PostalCode,
ln.value as LastName,
an.value as AccountNumber
from yourtable fn
left join yourtable a
on fn.somecol = a.somecol
and a.columnname = 'Amount'
left join yourtable pc
on fn.somecol = pc.somecol
and pc.columnname = 'PostalCode'
left join yourtable ln
on fn.somecol = ln.somecol
and ln.columnname = 'LastName'
left join yourtable an
on fn.somecol = an.somecol
and an.columnname = 'AccountNumber'
where fn.columnname = 'Firstname'
Увидев ваш обновленный вопрос, проблема понятна. Вы загружаете jquery второй раз (3-я последняя строка), которая, конечно же, перезаписывает все подключаемые ранее плагины. И поскольку вызов .marquee
является асинхронным (обратный вызов к событию готовности), плагин исчез в момент вызова обратного вызова.
Решение. Удалите этот второй раз, когда вы загружаете jquery.
Попробуйте положить это:
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function (){
jQuery("#marquee").marquee();
});
</script>
в теле
Вот пример того, что я говорю: http://jsfiddle.net/mjgasner / m64xQ /
В настоящий момент это не сработает, но если вы измените загрузку javascript на nowrap (body), он будет работать.