Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Peter
- Paul
- Mary
- SubjectID StudentName
- ---------- -------------
- 1 Mary
- 1 John
- 1 Sam
- 2 Alaina
- 2 Edward
- SubjectID StudentName
- ---------- -------------
- 1 Mary, John, Sam
- 2 Alaina, Edward
- Select Main.SubjectID,
- Left(Main.Students,Len(Main.Students)-1) As "Students"
- From
- (
- Select distinct ST2.SubjectID,
- (
- Select ST1.StudentName + ',' AS [text()]
- From dbo.Students ST1
- Where ST1.SubjectID = ST2.SubjectID
- ORDER BY ST1.SubjectID
- For XML PATH ('')
- ) [Students]
- From dbo.Students ST2
- ) [Main]
- Select distinct ST2.SubjectID,
- substring(
- (
- Select ','+ST1.StudentName AS [text()]
- From dbo.Students ST1
- Where ST1.SubjectID = ST2.SubjectID
- ORDER BY ST1.SubjectID
- For XML PATH ('')
- ), 2, 1000) [Students]
- From dbo.Students ST2
- SELECT FName + ', ' AS 'data()'
- FROM NameList
- FOR XML PATH('')
- "Peter, Paul, Mary, "
- STUFF(REPLACE((SELECT '#!' + LTRIM(RTRIM(FName)) AS 'data()' FROM NameList
- FOR XML PATH('')),' #!',', '), 1, 2, '') as Brands
- SELECT Stuff(
- (SELECT N', ' + Name FROM Names FOR XML PATH(''),TYPE)
- .value('text()[1]','nvarchar(max)'),1,2,N'')
- SELECT per.ID,
- Emails = JSON_VALUE(
- REPLACE(
- (SELECT _ = em.Email FROM Email em WHERE em.Person = per.ID FOR JSON PATH)
- ,'"},{"_":"',', '),'$[0]._'
- )
- FROM Person per
- Id Emails
- 1 abc@gmail.com
- 2 NULL
- 3 def@gmail.com, xyz@gmail.com
- SELECT STRING_AGG(Name, ', ') AS Departments
- FROM HumanResources.Department;
- SELECT GroupName, STRING_AGG(Name, ', ') AS Departments
- FROM HumanResources.Department
- GROUP BY GroupName;
- SELECT GroupName, STRING_AGG(Name, ', ') WITHIN GROUP (ORDER BY Name ASC) AS Departments
- FROM HumanResources.Department
- GROUP BY GroupName;
- SELECT 1 AS a, GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ', ') AS people
- FROM users
- WHERE id IN (1,2,3)
- GROUP BY a
- Declare @Numbers AS Nvarchar(MAX) -- It must not be MAX if you have few numbers
- SELECT @Numbers = COALESCE(@Numbers + ',', '') + Number
- FROM TableName where Number IS NOT NULL
- SELECT @Numbers
- 102,103,104
- postgres=# c test
- You are now connected to database "test" as user "hgimenez".
- test=# create table names (name text);
- CREATE TABLE
- test=# insert into names (name) values ('Peter'), ('Paul'), ('Mary');
- INSERT 0 3
- test=# select * from names;
- name
- -------
- Peter
- Paul
- Mary
- (3 rows)
- test=# select array_agg(name) from names;
- array_agg
- -------------------
- {Peter,Paul,Mary}
- (1 row)
- test=# select array_to_string(array_agg(name), ', ') from names;
- array_to_string
- -------------------
- Peter, Paul, Mary
- (1 row)
- COLUMN employees FORMAT A50
- SELECT deptno, LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees
- FROM emp
- GROUP BY deptno;
- DEPTNO EMPLOYEES
- ---------- --------------------------------------------------
- 10 CLARK,KING,MILLER
- 20 ADAMS,FORD,JONES,SCOTT,SMITH
- 30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD
- 3 rows selected.
- DECLARE @t table
- (
- Id int,
- Name varchar(10)
- )
- INSERT INTO @t
- SELECT 1,'a' UNION ALL
- SELECT 1,'b' UNION ALL
- SELECT 2,'c' UNION ALL
- SELECT 2,'d'
- SELECT ID,
- stuff(
- (
- SELECT ','+ [Name] FROM @t WHERE Id = t.Id FOR XML PATH('')
- ),1,1,'')
- FROM (SELECT DISTINCT ID FROM @t ) t
- DECLARE @names VARCHAR(500)
- SELECT @names = @names + ' ' + Name
- FROM Names
- select string_agg(name, ',')
- from names;
- ;with basetable as
- ( SELECT id, CAST(name as varchar(max))name,
- ROW_NUMBER() OVER(Partition By id order by seq) rw,
- COUNT(*) OVER (Partition By id) recs
- FROM (VALUES (1, 'Johnny', 1), (1,'M', 2),
- (2,'Bill', 1), (2, 'S.', 4), (2, 'Preston', 5), (2, 'Esq.', 6),
- (3, 'Ted', 1), (3,'Theodore', 2), (3,'Logan', 3),
- (4, 'Peter', 1), (4,'Paul', 2), (4,'Mary', 3)
- )g(id, name, seq)
- ),
- rCTE as (
- SELECT recs, id, name, rw from basetable where rw=1
- UNION ALL
- SELECT b.recs, r.ID, r.name +', '+ b.name name, r.rw+1
- FROM basetable b
- inner join rCTE r
- on b.id = r.id and b.rw = r.rw+1
- )
- SELECT name FROM rCTE
- WHERE recs = rw and ID=4
- DECLARE @char VARCHAR(MAX);
- SELECT @char = COALESCE(@char + ', ' + [column], [column])
- FROM [table];
- PRINT @char;
- REPLACE(
- (select FName AS 'data()' from NameList for xml path(''))
- , ' ', ', ')
- select substring(
- (select ', '+Name AS 'data()' from Names for xml path(''))
- ,3, 255) as "MyList"
- DECLARE @Names VARCHAR(8000)
- SELECT @name = ''
- SELECT @Names = @Names + ',' + Names FROM People
- SELECT SUBSTRING(2, @Names, 7998)
- SELECT
- Table_Name
- ,STUFF((
- SELECT ',' + Column_Name
- FROM INFORMATION_SCHEMA.Columns Columns
- WHERE Tables.Table_Name = Columns.Table_Name
- ORDER BY Column_Name
- FOR XML PATH ('')), 1, 1, ''
- )Columns
- FROM INFORMATION_SCHEMA.Columns Tables
- GROUP BY TABLE_NAME
- SELECT question_id,
- LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id)
- FROM YOUR_TABLE;
- GROUP BY question_id
- DECLARE @names VARCHAR(500)
- SELECT @names = CONCAT(@names, ' ', name)
- FROM Names
- select @names
- CREATE Assembly concat_assembly
- AUTHORIZATION dbo
- FROM '<PATH TO Concat.dll IN SERVER>'
- WITH PERMISSION_SET = SAFE;
- GO
- CREATE AGGREGATE dbo.concat (
- @Value NVARCHAR(MAX)
- , @Delimiter NVARCHAR(4000)
- ) RETURNS NVARCHAR(MAX)
- EXTERNAL Name concat_assembly.[Concat.Concat];
- GO
- sp_configure 'clr enabled', 1;
- RECONFIGURE
- SELECT dbo.Concat(field1, ',')
- FROM Table1
- ___________________________
- | id | rowList |
- |-------------------------|
- | 0 | 6, 9 |
- | 1 | 1,2,3,4,5,7,8,1 |
- |_________________________|
- CREATE TABLE `Data` (
- `id` int(11) NOT NULL,
- `user_id` int(11) NOT NULL
- ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
- INSERT INTO `Data` (`id`, `user_id`) VALUES
- (1, 1),
- (2, 1),
- (3, 1),
- (4, 1),
- (5, 1),
- (6, 0),
- (7, 1),
- (8, 1),
- (9, 0),
- (10, 1);
- CREATE TABLE `User` (
- `id` int(11) NOT NULL
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
- INSERT INTO `User` (`id`) VALUES
- (0),
- (1);
- SELECT User.id, GROUP_CONCAT(Data.id ORDER BY Data.id) AS rowList FROM User LEFT JOIN Data ON User.id = Data.user_id GROUP BY User.id
- DECLARE @names VARCHAR(MAX)
- SET @names = ''
- SELECT @names = @names + ', ' + Name FROM Names
- -- Deleting last two symbols (', ')
- SET @sSql = LEFT(@sSql, LEN(@sSql) - 1)
- with lines as
- (
- select
- row_number() over(order by id) id, -- id is a line id
- line -- line of text.
- from
- source -- line source
- ),
- result_lines as
- (
- select
- id,
- cast(line as nvarchar(max)) line
- from
- lines
- where
- id = 1
- union all
- select
- l.id,
- cast(r.line + N', ' + l.line as nvarchar(max))
- from
- lines l
- inner join
- result_lines r
- on
- l.id = r.id + 1
- )
- select top 1
- line
- from
- result_lines
- order by
- id desc
- create table #test (id int,name varchar(10))
- --use separate inserts on older versions of SQL Server
- insert into #test values (1,'Peter'), (1,'Paul'), (1,'Mary'), (2,'Alex'), (3,'Jack')
- DECLARE @t VARCHAR(255)
- SELECT @t = ISNULL(@t + ',' + name, name) FROM #test WHERE id = 1
- select @t
- drop table #test
- Peter,Paul,Mary
- DECLARE @Names VARCHAR(8000)
- SELECT @Names = COALESCE(COALESCE(@Names + ', ', '') + Name, @Names) FROM People
- CREATE TABLE dbo.Students
- (
- StudentId INT
- , Name VARCHAR(50)
- , CONSTRAINT PK_Students PRIMARY KEY (StudentId)
- );
- CREATE TABLE dbo.Subjects
- (
- SubjectId INT
- , Name VARCHAR(50)
- , CONSTRAINT PK_Subjects PRIMARY KEY (SubjectId)
- );
- CREATE TABLE dbo.Schedules
- (
- StudentId INT
- , SubjectId INT
- , CONSTRAINT PK__Schedule PRIMARY KEY (StudentId, SubjectId)
- , CONSTRAINT FK_Schedule_Students FOREIGN KEY (StudentId) REFERENCES dbo.Students (StudentId)
- , CONSTRAINT FK_Schedule_Subjects FOREIGN KEY (SubjectId) REFERENCES dbo.Subjects (SubjectId)
- );
- INSERT dbo.Students (StudentId, Name) VALUES
- (1, 'Mary')
- , (2, 'John')
- , (3, 'Sam')
- , (4, 'Alaina')
- , (5, 'Edward')
- ;
- INSERT dbo.Subjects (SubjectId, Name) VALUES
- (1, 'Physics')
- , (2, 'Geography')
- , (3, 'French')
- , (4, 'Gymnastics')
- ;
- INSERT dbo.Schedules (StudentId, SubjectId) VALUES
- (1, 1) --Mary, Physics
- , (2, 1) --John, Physics
- , (3, 1) --Sam, Physics
- , (4, 2) --Alaina, Geography
- , (5, 2) --Edward, Geography
- ;
- SELECT
- sub.SubjectId
- , sub.Name AS [SubjectName]
- , ISNULL( x.Students, '') AS Students
- FROM
- dbo.Subjects sub
- OUTER APPLY
- (
- SELECT
- CASE ROW_NUMBER() OVER (ORDER BY stu.Name) WHEN 1 THEN '' ELSE ', ' END
- + stu.Name
- FROM
- dbo.Students stu
- INNER JOIN dbo.Schedules sch
- ON stu.StudentId = sch.StudentId
- WHERE
- sch.SubjectId = sub.SubjectId
- ORDER BY
- stu.Name
- FOR XML PATH('')
- ) x (Students)
- ;
- DECLARE @MyList VARCHAR(1000), @Delimiter CHAR(2) = ', '
- SELECT @MyList = CASE WHEN @MyList > '' THEN @MyList + @Delimiter ELSE '' END + FieldToConcatenate FROM MyData
Add Comment
Please, Sign In to add comment