Stránka 1 z 1

MSSQL vrácení hodnot jednoho řádku jako string

Napsal: stř 16. lis 2016, 15:47
od dark_stuff
MSSQL 2012
Nezná někdo způsob, jak výsledek dotazu

Kód: Vybrat vše

select TOP 1 * from Table1
převést do formátu <Col1Value>, <Col2Value>, ... , <ColnValue>, tedy string hodnot všech sloupců? Spokojil bych se i s tím, že výsledek dostanu do jednoho sloupce tak, že co řádek, to jedna hodnota (unpivot?).
Předem neznám počet sloupců ani jejich názvy, pracuju tedy jen s *.

Re: MSSQL vrácení hodnot jednoho řádku jako string

Napsal: stř 16. lis 2016, 20:45
od mlrs
zalezi - co tohle: //kdyztak napis podrobnej

Kód: Vybrat vše

CREATE TABLE #priklad
(
 RowID   INT PRIMARY KEY   
,Txt     VARCHAR(MAX)
)

INSERT INTO #priklad
(RowID,Txt)
      SELECT 1,'A1'
UNION SELECT 2,'A2'
UNION SELECT 3,'A3'
UNION SELECT 4,'A4'
UNION SELECT 5,'A5'
UNION SELECT 6,'A6'
UNION SELECT 7,'A7'
UNION SELECT 8,'A8'

select * from #priklad

--pres CTE -> samozrejme muzes dat carku do pryc...
;WITH CTE_priklad AS
    (
    SELECT  RowID,
            Txt
    FROM    #priklad
    WHERE   RowID = 1
    UNION ALL
    SELECT  #priklad.RowID
           ,CTE_priklad.Txt + ',' + #priklad.Txt
    FROM    CTE_priklad
    JOIN    #priklad
    ON      #priklad.RowID = CTE_priklad.RowID + 1
    )
    SELECT  Txt
    FROM    CTE_priklad
    WHERE   RowID = (SELECT MAX(RowID) FROM #priklad)


--staticky
SELECT [1]+','+[2]+','+[3]+','+[4]+','+[5]+','+[6]+','+[7]+','+[8] AS Txt
FROM  (SELECT 'Total' AS AC,[1],[2],[3],[4],[5],[6],[7],[8]
       FROM    
          (SELECT RowID,Txt FROM #priklad) AS B
       PIVOT (MAX(Txt) FOR RowID IN ([1],[2],[3],[4],[5],[6],[7],[8])
             ) AS A
      ) AS C

Re: MSSQL vrácení hodnot jednoho řádku jako string

Napsal: pát 18. lis 2016, 11:12
od dark_stuff
Možná jsem to popsal špatně.

Kód: Vybrat vše

Id | Col1 | Col2
-----------------
1  | A     | B
2  | C     | D
A jako výsledek nějakého selectu (where Id = 1):

Kód: Vybrat vše

1, A, B
Nebo

Kód: Vybrat vše

ColName | Value
-------------------
Id      | 1
Col1    | A
Col2    | B
A to s tím, že předem neznám, jaké všechny sloupce tabulka obsahuje (jen vím, že má sloupec Id).

Re: MSSQL vrácení hodnot jednoho řádku jako string

Napsal: pát 18. lis 2016, 11:27
od Zivan
Neco takoveho?
http://stackoverflow.com/questions/1054 ... sql-server

Na SQL serveru mi "SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('<nazev_tabulky>')" vraci jmena sloupcu v dane tabulce.

Re: MSSQL vrácení hodnot jednoho řádku jako string

Napsal: úte 7. úno 2017, 16:27
od marek16