Guest User

Untitled

a guest
Feb 28th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.30 KB | None | 0 0
  1. Peter
  2. Paul
  3. Mary
  4.  
  5. SubjectID StudentName
  6. ---------- -------------
  7. 1 Mary
  8. 1 John
  9. 1 Sam
  10. 2 Alaina
  11. 2 Edward
  12.  
  13. SubjectID StudentName
  14. ---------- -------------
  15. 1 Mary, John, Sam
  16. 2 Alaina, Edward
  17.  
  18. Select Main.SubjectID,
  19. Left(Main.Students,Len(Main.Students)-1) As "Students"
  20. From
  21. (
  22. Select distinct ST2.SubjectID,
  23. (
  24. Select ST1.StudentName + ',' AS [text()]
  25. From dbo.Students ST1
  26. Where ST1.SubjectID = ST2.SubjectID
  27. ORDER BY ST1.SubjectID
  28. For XML PATH ('')
  29. ) [Students]
  30. From dbo.Students ST2
  31. ) [Main]
  32.  
  33. Select distinct ST2.SubjectID,
  34. substring(
  35. (
  36. Select ','+ST1.StudentName AS [text()]
  37. From dbo.Students ST1
  38. Where ST1.SubjectID = ST2.SubjectID
  39. ORDER BY ST1.SubjectID
  40. For XML PATH ('')
  41. ), 2, 1000) [Students]
  42. From dbo.Students ST2
  43.  
  44. SELECT FName + ', ' AS 'data()'
  45. FROM NameList
  46. FOR XML PATH('')
  47.  
  48. "Peter, Paul, Mary, "
  49.  
  50. STUFF(REPLACE((SELECT '#!' + LTRIM(RTRIM(FName)) AS 'data()' FROM NameList
  51. FOR XML PATH('')),' #!',', '), 1, 2, '') as Brands
  52.  
  53. SELECT Stuff(
  54. (SELECT N', ' + Name FROM Names FOR XML PATH(''),TYPE)
  55. .value('text()[1]','nvarchar(max)'),1,2,N'')
  56.  
  57. SELECT per.ID,
  58. Emails = JSON_VALUE(
  59. REPLACE(
  60. (SELECT _ = em.Email FROM Email em WHERE em.Person = per.ID FOR JSON PATH)
  61. ,'"},{"_":"',', '),'$[0]._'
  62. )
  63. FROM Person per
  64.  
  65. Id Emails
  66. 1 abc@gmail.com
  67. 2 NULL
  68. 3 def@gmail.com, xyz@gmail.com
  69.  
  70. SELECT STRING_AGG(Name, ', ') AS Departments
  71. FROM HumanResources.Department;
  72.  
  73. SELECT GroupName, STRING_AGG(Name, ', ') AS Departments
  74. FROM HumanResources.Department
  75. GROUP BY GroupName;
  76.  
  77. SELECT GroupName, STRING_AGG(Name, ', ') WITHIN GROUP (ORDER BY Name ASC) AS Departments
  78. FROM HumanResources.Department
  79. GROUP BY GroupName;
  80.  
  81. SELECT 1 AS a, GROUP_CONCAT(name ORDER BY name ASC SEPARATOR ', ') AS people
  82. FROM users
  83. WHERE id IN (1,2,3)
  84. GROUP BY a
  85.  
  86. Declare @Numbers AS Nvarchar(MAX) -- It must not be MAX if you have few numbers
  87. SELECT @Numbers = COALESCE(@Numbers + ',', '') + Number
  88. FROM TableName where Number IS NOT NULL
  89.  
  90. SELECT @Numbers
  91.  
  92. 102,103,104
  93.  
  94. postgres=# c test
  95. You are now connected to database "test" as user "hgimenez".
  96. test=# create table names (name text);
  97. CREATE TABLE
  98. test=# insert into names (name) values ('Peter'), ('Paul'), ('Mary');
  99. INSERT 0 3
  100. test=# select * from names;
  101. name
  102. -------
  103. Peter
  104. Paul
  105. Mary
  106. (3 rows)
  107.  
  108. test=# select array_agg(name) from names;
  109. array_agg
  110. -------------------
  111. {Peter,Paul,Mary}
  112. (1 row)
  113.  
  114. test=# select array_to_string(array_agg(name), ', ') from names;
  115. array_to_string
  116. -------------------
  117. Peter, Paul, Mary
  118. (1 row)
  119.  
  120. COLUMN employees FORMAT A50
  121.  
  122. SELECT deptno, LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees
  123. FROM emp
  124. GROUP BY deptno;
  125.  
  126. DEPTNO EMPLOYEES
  127. ---------- --------------------------------------------------
  128. 10 CLARK,KING,MILLER
  129. 20 ADAMS,FORD,JONES,SCOTT,SMITH
  130. 30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD
  131.  
  132. 3 rows selected.
  133.  
  134. DECLARE @t table
  135. (
  136. Id int,
  137. Name varchar(10)
  138. )
  139. INSERT INTO @t
  140. SELECT 1,'a' UNION ALL
  141. SELECT 1,'b' UNION ALL
  142. SELECT 2,'c' UNION ALL
  143. SELECT 2,'d'
  144.  
  145. SELECT ID,
  146. stuff(
  147. (
  148. SELECT ','+ [Name] FROM @t WHERE Id = t.Id FOR XML PATH('')
  149. ),1,1,'')
  150. FROM (SELECT DISTINCT ID FROM @t ) t
  151.  
  152. DECLARE @names VARCHAR(500)
  153.  
  154. SELECT @names = @names + ' ' + Name
  155. FROM Names
  156.  
  157. select string_agg(name, ',')
  158. from names;
  159.  
  160. ;with basetable as
  161. ( SELECT id, CAST(name as varchar(max))name,
  162. ROW_NUMBER() OVER(Partition By id order by seq) rw,
  163. COUNT(*) OVER (Partition By id) recs
  164. FROM (VALUES (1, 'Johnny', 1), (1,'M', 2),
  165. (2,'Bill', 1), (2, 'S.', 4), (2, 'Preston', 5), (2, 'Esq.', 6),
  166. (3, 'Ted', 1), (3,'Theodore', 2), (3,'Logan', 3),
  167. (4, 'Peter', 1), (4,'Paul', 2), (4,'Mary', 3)
  168.  
  169. )g(id, name, seq)
  170. ),
  171. rCTE as (
  172. SELECT recs, id, name, rw from basetable where rw=1
  173. UNION ALL
  174. SELECT b.recs, r.ID, r.name +', '+ b.name name, r.rw+1
  175. FROM basetable b
  176. inner join rCTE r
  177. on b.id = r.id and b.rw = r.rw+1
  178. )
  179. SELECT name FROM rCTE
  180. WHERE recs = rw and ID=4
  181.  
  182. DECLARE @char VARCHAR(MAX);
  183.  
  184. SELECT @char = COALESCE(@char + ', ' + [column], [column])
  185. FROM [table];
  186.  
  187. PRINT @char;
  188.  
  189. REPLACE(
  190. (select FName AS 'data()' from NameList for xml path(''))
  191. , ' ', ', ')
  192.  
  193. select substring(
  194. (select ', '+Name AS 'data()' from Names for xml path(''))
  195. ,3, 255) as "MyList"
  196.  
  197. DECLARE @Names VARCHAR(8000)
  198. SELECT @name = ''
  199. SELECT @Names = @Names + ',' + Names FROM People
  200. SELECT SUBSTRING(2, @Names, 7998)
  201.  
  202. SELECT
  203. Table_Name
  204. ,STUFF((
  205. SELECT ',' + Column_Name
  206. FROM INFORMATION_SCHEMA.Columns Columns
  207. WHERE Tables.Table_Name = Columns.Table_Name
  208. ORDER BY Column_Name
  209. FOR XML PATH ('')), 1, 1, ''
  210. )Columns
  211. FROM INFORMATION_SCHEMA.Columns Tables
  212. GROUP BY TABLE_NAME
  213.  
  214. SELECT question_id,
  215. LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id)
  216. FROM YOUR_TABLE;
  217. GROUP BY question_id
  218.  
  219. DECLARE @names VARCHAR(500)
  220. SELECT @names = CONCAT(@names, ' ', name)
  221. FROM Names
  222. select @names
  223.  
  224. CREATE Assembly concat_assembly
  225. AUTHORIZATION dbo
  226. FROM '<PATH TO Concat.dll IN SERVER>'
  227. WITH PERMISSION_SET = SAFE;
  228. GO
  229.  
  230. CREATE AGGREGATE dbo.concat (
  231.  
  232. @Value NVARCHAR(MAX)
  233. , @Delimiter NVARCHAR(4000)
  234.  
  235. ) RETURNS NVARCHAR(MAX)
  236. EXTERNAL Name concat_assembly.[Concat.Concat];
  237. GO
  238.  
  239. sp_configure 'clr enabled', 1;
  240. RECONFIGURE
  241.  
  242. SELECT dbo.Concat(field1, ',')
  243. FROM Table1
  244.  
  245. ___________________________
  246. | id | rowList |
  247. |-------------------------|
  248. | 0 | 6, 9 |
  249. | 1 | 1,2,3,4,5,7,8,1 |
  250. |_________________________|
  251.  
  252. CREATE TABLE `Data` (
  253. `id` int(11) NOT NULL,
  254. `user_id` int(11) NOT NULL
  255. ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
  256.  
  257.  
  258. INSERT INTO `Data` (`id`, `user_id`) VALUES
  259. (1, 1),
  260. (2, 1),
  261. (3, 1),
  262. (4, 1),
  263. (5, 1),
  264. (6, 0),
  265. (7, 1),
  266. (8, 1),
  267. (9, 0),
  268. (10, 1);
  269.  
  270.  
  271. CREATE TABLE `User` (
  272. `id` int(11) NOT NULL
  273. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  274.  
  275.  
  276. INSERT INTO `User` (`id`) VALUES
  277. (0),
  278. (1);
  279.  
  280. 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
  281.  
  282. DECLARE @names VARCHAR(MAX)
  283. SET @names = ''
  284.  
  285. SELECT @names = @names + ', ' + Name FROM Names
  286.  
  287. -- Deleting last two symbols (', ')
  288. SET @sSql = LEFT(@sSql, LEN(@sSql) - 1)
  289.  
  290. with lines as
  291. (
  292. select
  293. row_number() over(order by id) id, -- id is a line id
  294. line -- line of text.
  295. from
  296. source -- line source
  297. ),
  298. result_lines as
  299. (
  300. select
  301. id,
  302. cast(line as nvarchar(max)) line
  303. from
  304. lines
  305. where
  306. id = 1
  307. union all
  308. select
  309. l.id,
  310. cast(r.line + N', ' + l.line as nvarchar(max))
  311. from
  312. lines l
  313. inner join
  314. result_lines r
  315. on
  316. l.id = r.id + 1
  317. )
  318. select top 1
  319. line
  320. from
  321. result_lines
  322. order by
  323. id desc
  324.  
  325. create table #test (id int,name varchar(10))
  326. --use separate inserts on older versions of SQL Server
  327. insert into #test values (1,'Peter'), (1,'Paul'), (1,'Mary'), (2,'Alex'), (3,'Jack')
  328.  
  329. DECLARE @t VARCHAR(255)
  330. SELECT @t = ISNULL(@t + ',' + name, name) FROM #test WHERE id = 1
  331. select @t
  332. drop table #test
  333.  
  334. Peter,Paul,Mary
  335.  
  336. DECLARE @Names VARCHAR(8000)
  337. SELECT @Names = COALESCE(COALESCE(@Names + ', ', '') + Name, @Names) FROM People
  338.  
  339. CREATE TABLE dbo.Students
  340. (
  341. StudentId INT
  342. , Name VARCHAR(50)
  343. , CONSTRAINT PK_Students PRIMARY KEY (StudentId)
  344. );
  345.  
  346. CREATE TABLE dbo.Subjects
  347. (
  348. SubjectId INT
  349. , Name VARCHAR(50)
  350. , CONSTRAINT PK_Subjects PRIMARY KEY (SubjectId)
  351. );
  352.  
  353. CREATE TABLE dbo.Schedules
  354. (
  355. StudentId INT
  356. , SubjectId INT
  357. , CONSTRAINT PK__Schedule PRIMARY KEY (StudentId, SubjectId)
  358. , CONSTRAINT FK_Schedule_Students FOREIGN KEY (StudentId) REFERENCES dbo.Students (StudentId)
  359. , CONSTRAINT FK_Schedule_Subjects FOREIGN KEY (SubjectId) REFERENCES dbo.Subjects (SubjectId)
  360. );
  361.  
  362. INSERT dbo.Students (StudentId, Name) VALUES
  363. (1, 'Mary')
  364. , (2, 'John')
  365. , (3, 'Sam')
  366. , (4, 'Alaina')
  367. , (5, 'Edward')
  368. ;
  369.  
  370. INSERT dbo.Subjects (SubjectId, Name) VALUES
  371. (1, 'Physics')
  372. , (2, 'Geography')
  373. , (3, 'French')
  374. , (4, 'Gymnastics')
  375. ;
  376.  
  377. INSERT dbo.Schedules (StudentId, SubjectId) VALUES
  378. (1, 1) --Mary, Physics
  379. , (2, 1) --John, Physics
  380. , (3, 1) --Sam, Physics
  381. , (4, 2) --Alaina, Geography
  382. , (5, 2) --Edward, Geography
  383. ;
  384.  
  385. SELECT
  386. sub.SubjectId
  387. , sub.Name AS [SubjectName]
  388. , ISNULL( x.Students, '') AS Students
  389. FROM
  390. dbo.Subjects sub
  391. OUTER APPLY
  392. (
  393. SELECT
  394. CASE ROW_NUMBER() OVER (ORDER BY stu.Name) WHEN 1 THEN '' ELSE ', ' END
  395. + stu.Name
  396. FROM
  397. dbo.Students stu
  398. INNER JOIN dbo.Schedules sch
  399. ON stu.StudentId = sch.StudentId
  400. WHERE
  401. sch.SubjectId = sub.SubjectId
  402. ORDER BY
  403. stu.Name
  404. FOR XML PATH('')
  405. ) x (Students)
  406. ;
  407.  
  408. DECLARE @MyList VARCHAR(1000), @Delimiter CHAR(2) = ', '
  409. SELECT @MyList = CASE WHEN @MyList > '' THEN @MyList + @Delimiter ELSE '' END + FieldToConcatenate FROM MyData
Add Comment
Please, Sign In to add comment