У меня проблема в SQL Server, когда я пытаюсь select два столбца.
Вот код, который я написал:
declare @d varchar(max)
set @d = ''
begin
select @d = @d + convert(nvarchar(MAX), R.Data, 121) + ('<table></td><td>' + convert(nvarchar(MAX), C.No) + '</td><td>' + C.Nome + '</td><td>' + convert(nvarchar(MAX), V.IdVendedor) + '</td><td>' + convert(nvarchar(MAX), V.Vendnm) + '</td></tr></table>')
from dbo.Reclamacoes R
Inner Join dbo.PHC_CLIENTES_SAMSYS C On R.IdCliente = C.Id
Inner Join dbo.PHC_VENDEDORES_SAMSYS V on R.IdVendedor = V.IdVendedor
select @d As Data, @d As HTML_COLUMN
end
Это выглядит так:
2019-02-07 00:00:00.0000000 " <table></td><td>2762.00</td><td>REGINA & MIGUEL, LDA. ( REMI )</td><td>78.00</td><td>AndreiaVeloso</td></tr></table> "
Как вы видите, данные смешаны с тем, что должно появиться в другом столбце (я вставил "" то, что должно появиться в другом столбце).
И когда я выполняю столбец, известный как «Данные», смешивается с «HTML_COLUMN. И я пытаюсь получить два столбца только с одной переменной.
Может ли кто-нибудь сказать мне, возможно ли в моем случае иметь запрос, показывающий два столбца при наличии только одной переменной? Заранее спасибо.
Да, я уже сделал это, но в моей компании меня попросили сделать только одну переменную и спросили, почему у меня две переменные..
так что у вас нет 2 переменных - у вас есть только 1. Оба ваших столбца сохраняются в @d попеременно, потому что для каждой строки вы добавляете Data и свой HTML_COLUMN снова и снова
@TabsNotSpaces да, я это заметил, но теперь я спрашиваю, возможно ли иметь эти два столбца только с одной переменной?
Можете ли вы добавить к исходному сообщению, как будет выглядеть желаемый результат? Это варчар? Это стол?
Добавьте некоторые образцы данных и желаемый результат.
@ М.Али, как мне это сделать?
Я имею в виду добавить некоторые образцы данных и желаемый результат в ваш вопрос.
Комментарии — это неправильное место для кода Редактировать вашего сообщения.
@m.ali и Ларну сделали это прямо сейчас.
Буквально, краткий ответ на ваш вопрос: можно иметь столько проекций (наборов столбцов) из одного источника, сколько нужно (теоретически - бесконечно, на практике - уйма). Но я полагаю, это не ответ, которого вы ждете. Пока непонятно: какой у вас ожидаемый результат?


Вы можете сделать @dТабличная переменная и поместить в него два столбца.
Пример из MSDN:
DECLARE @MyTableVar table(
EmpID int NOT NULL,
OldVacationHours int,
NewVacationHours int,
ModifiedDate datetime);
как я это делаю??
Ссылка в моем ответе показывает, как это сделать. Прокрутите вниз до примера C.
У меня нет такого опыта работы с sql, я не понимаю половину или более кода, я уже посещал этот сайт и другие подобные.
Попробуй это..
DECLARE @HTML NVARCHAR(MAX) = '';
SET @HTML
= N'<table border = "1" >'
+ N'<tr><th>Data</th><th>Nome</th><th>IdVendedor</th><th>Vendnm</th>'
+ CAST((
SELECT
td = R.Data
, ''
, td = C.Nome
, ''
, td = V.IdVendedor
, ''
, td = V.Vendnm
FROM dbo.Reclamacoes R
INNER JOIN dbo.PHC_CLIENTES_SAMSYS C ON R.IdCliente = C.Id
INNER JOIN dbo.PHC_VENDEDORES_SAMSYS V ON R.IdVendedor = V.IdVendedor
FOR XML PATH('tr'), TYPE
) AS NVARCHAR(MAX)) + N'</table>';
SELECT @HTML;
Сделать вторую переменную? Как вы можете хранить 2 отдельных фрагмента данных в 1 переменной. Это не имеет никакого смысла.