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

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
dark_stuff
Začátečník
Začátečník
Uživatelský avatar
Registrován: 23. bře 2006
Bydliště: Bruntál / Olomouc

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

Příspěvek 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 *.
Lidi jsou různí. Víc nesmím říct.
Černá karta je rasistická!
mlrs
Začátečník
Začátečník
Registrován: 11. kvě 2006
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek 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
Ryzen 5 5600 + Wraith Prism RGB, RTX 3070 EAGLE 8G, ASUS PRIME X470-PRO, Patriot Viper 4 32GB DDR4 3000Mhz, 2,25TB SSD, 1TB HDD, Seasonic Focus GX 650, Xigmatek Asgard, Dell U3023E
PC2: Intel NUC 11 Performance Lite, Core i5-1135G7, Iris Xe, 32GB RAM DDR4 3200MHz, 1TB Samsung 970 EVO PLUS + Xbox Series X
dark_stuff
Začátečník
Začátečník
Uživatelský avatar
Registrován: 23. bře 2006
Bydliště: Bruntál / Olomouc

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

Příspěvek 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).
Lidi jsou různí. Víc nesmím říct.
Černá karta je rasistická!
Zivan
Začátečník
Začátečník
Registrován: 30. čer 2005
Bydliště: Brno
Kontaktovat uživatele:

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

Příspěvek 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.
HP Elitebook 845 G8 (Ryzen 5650U, 32GB RAM, WD SN570 1TB, 14" fullHD IPS) + HP USB-C G5 Essential + 29" LG 29UM65 + 22" Eizo S2202W
marek16
Začátečník
Začátečník
Uživatelský avatar
Registrován: 22. čer 2006
Bydliště: Brno

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

Příspěvek od marek16 »

Quis custodiet ipsos custodes?
Odpovědět

Zpět na „Programování a web“