Wpis z mikrobloga

#sql

Szybkie pytanie.
Mam jednokolumnową tabelę, która zawiera następujące pozycje:

A
B
C
D
E

Jak napisać selecta, żeby zwrócił mi: w jednej linii po średnikach A;B;C;D;E

Musi to być widok i nie mogę użyć procedury/funkcji a zatem COALESCE odpada...
  • 12
@janek_: Microsoft SQL Server 2016 (SP3) (KB5003279) - 13.0.6300.2 (X64) Aug 7 2021 01:20:37 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Standard 10.0 (Build 14393: ) (Hypervisor)
@gen_mielec: używając STRING_AGG() (która to funkcja jest dostępna od MSSQL 2017) wyglądało by to następująco:

SELECT string_agg(foo, ';') WITHIN GROUP ( ORDER BY foo) as polaczone_literki
FROM --tutaj powinna byc nazwa twojej tabelki a ponizej juz nic nie powinno być
(VALUES ('A')
, ('Z')
, ('B')
, ('C')
, ('D')
, ('E')
) dane_z_dupy (foo)

https://dbfiddle.uk/?rdbms=sqlserver_2019l&fiddle=26e18ad82d0654c684218f74a4e6231b

ale skoro używasz starszej wersji SQL Servera to musisz użyć tego dziwacznego workaroundu z użyciem