0
votes

SQL Server - Comment puis-je mettre les valeurs d'un résultat côte à côte

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')
How can I put the values(RESULT) in a result side by side
   How can I do it? --> Set @DomainName = 'marka.com' @DomainName = 'marka.com'  --How do I add

3 commentaires

Production attendue?


Vous demandez-vous comment attribuer la valeur d'une variable dans une instruction ? docs.microsoft.com/en-us/sql/t-sql/language-elements/...


Merci tout le monde. J'ai fait


3 Réponses :


1
votes
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
Demo

1 commentaires

Oui, c'est le résultat que je veux. Mais alors comment puis-je la définir @DomainName



2
votes

cherchez-vous une agrégation conditionnelle?

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;


0 commentaires

0
votes
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

0 commentaires