Сервер SQL - Как я могу положить значения в результате бок о бок - PullRequest
0 голосов
/ 21 октября 2019
CREATE TABLE #E (
ID INT ,
NAME VARCHAR(20),
RESULT VARCHAR(20)
)

INSERT INTO #E VALUES (1,'DOMAIN','marka')
INSERT INTO #E VALUES (1,'EXTENSION','.com')
INSERT INTO #E VALUES (1,'TYPE','WEB')

SELECT * FROM #E

Declare @DomainName varchar(20) = ''
--How can I put the values(RESULT) in a result side by side
SELECT RESULT FROM #E  WHERE ID=1 AND NAME IN ('DOMAIN','EXTENSION')

Как я могу поместить значения (РЕЗУЛЬТАТ) в результат рядом Как я могу это сделать? -> Установить @DomainName = 'marka.com'

@ DomainName = 'marka.com' - Как мне добавить

enter image description here

Ответы [ 3 ]

2 голосов
/ 21 октября 2019

Вы ищете условную агрегацию?

select max(case when name = 'DOMAIN' then result end) as domain,
       max(case when name = 'EXTENSION' then result end) as extension,
       max(case when name = 'TYPE' then result end) as type
from #E e
group by id;
1 голос
/ 21 октября 2019
WITH res1
AS (
    SELECT result
        ,ID
    FROM #E
    WHERE name = 'DOMAIN'
    )
    ,res2
AS (
    SELECT result
        ,ID
    FROM #E
    WHERE name = 'EXTENSION'
    )
SELECT CONCAT (
        res1.result
        ,res2.result
        )
FROM RES1
INNER JOIN RES2 ON RES1.ID = RES2.ID

Демо

0 голосов
/ 21 октября 2019
DECLARE @DomainName varchar(20) = ''

SELECT @DomainName = (DOMAIN + EXTENSION) FROM
(
    SELECT * 
    FROM #E  
    WHERE ID=1 
    AND NAME IN ('DOMAIN','EXTENSION')
) as main
PIVOT
(
    MAX(RESULT)
    FOR NAME IN ([DOMAIN],[EXTENSION])
) piv

SELECT @DomainName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...