我在尝试着
现在,我可以做到不。单个 ID ( ID = 1006) 的 2 部分,但我想汇总所有 ID 的评论。我正在努力在查询中的位置以及如何添加“group by”子句。
这是查询:
create table Comments (ID int, Comment nvarchar(150), RegionCode int)
insert into Comments values (1006, 'I', 1)
, (1006, 'am', 1)
, (1006, 'good', 1)
, (1006, 'bad', 2)
, (2, 'You', 1)
, (2, 'are', 1)
, (2, 'awesome', 1)
SELECT
SUBSTRING((SELECT Comment
FROM Comments
WHERE ID = 1006 AND RegionCode != 2
FOR XML PATH('')), 1, 999999) AS Comment_Agg
Run Code Online (Sandbox Code Playgroud)
我想要的结果看起来像这样: …
我有一张桌子如:
|Date |Name|
--------------------
|'20-May-2011'|Bob |
|'20-May-2011'|Fred|
|'20-May-2011'|Jim |
|'21-May-2011'|Bob |
|'21-May-2011'|Ed |
|'22-May-2011'|Bill|
Run Code Online (Sandbox Code Playgroud)
我需要一个查询来返回:
|Date |Count|Names |
--------------------------------------
|'20-May-2011'| 3|'Bob, Fred, Jim'|
|'21-May-2011'| 2|'Bob, Ed' |
|'22-May-2011'| 1|'Bill' |
Run Code Online (Sandbox Code Playgroud)
换句话说,我想要一个列表和按日期的名称计数.我能想到的最好的是:
SELECT list.[Date], [Count], [Names]
FROM (
SELECT [Date],
STUFF((
SELECT ', ' + [Name]
FROM #table t2
WHERE t2.[Date] = t.[Date]
ORDER BY [Name]
FOR XML PATH('')
), 1, 2, '') AS [Names]
FROM #table t
GROUP BY [Date]
) [list]
INNER JOIN (
SELECT [Date],
COUNT(*) AS [Count] …Run Code Online (Sandbox Code Playgroud) 我正在尝试将列中的一些值连接到单个字段中。
到目前为止我有以下代码。
SELECT DISTINCT [customer id]
,[customer name]
,STUFF( (SELECT ',' + [description]
FROM [Invoicing].[dbo].[CurrentBillMaster]
ORDER BY [description]
FOR XML PATH('')),
1, 1, '')
,[id]
,[Section]
,[customerpo]
FROM [Invoicing].[dbo].[CurrentBillMaster]
GROUP BY [customer id], [customer name], [description],[qty],
[identifier],[FromDate],[ToDate],[id],[Section],[customerpo]
Run Code Online (Sandbox Code Playgroud)
该代码基本上可以工作,但是我想要串联的描述,只是为了显示该唯一的[客户 ID] 的描述
非常感谢任何帮助
我正在尝试将一组行转置为多列。
到目前为止,我已经能够使用 xml 路径将一组行聚合到单个列中,但我需要将更多数据保留到更多列中。
CntTyp表(触点类型)
| ContactID | CatCode | CatDesc |
|-----------|---------|---------|
| 89 | 26 | OA |
| 89 | 27 | OA2 |
| 90 | 26 | OA |
| 91 | 26 | OA |
| 91 | 1625 | Donor |
| 91 | 1625 | Player |
Run Code Online (Sandbox Code Playgroud)
所需输出
| ContactID | CatCode | CatDesc | CatCode | CatDesc | CatCode | CatDesc |
|-----------|---------|---------|---------|---------|---------|---------|
| 89 | 26 | OA | 27 …Run Code Online (Sandbox Code Playgroud) 我正在使用 SQL Server Standard(64 位)14.0.1000.169 在 QA 服务器上使用屏蔽数据库。这是我的结构:
CREATE TABLE [dbo].[Test](
[Column1] [VARCHAR(64)] NULL,
[Column2] [VARCHAR(64)] NULL
)
GO
INSERT INTO [dbo].[Test]
VALUES ('ABCDEFG', 'HIJKLMN')
Run Code Online (Sandbox Code Playgroud)
我用以下代码屏蔽了该列:
ALTER TABLE [dbo].[Test]
ALTER COLUMN [Column1] VARCHAR(64) MASKED WITH (FUNCTION = 'default()');
Run Code Online (Sandbox Code Playgroud)
当我使用非允许的用户执行以下查询时,它按预期工作:
SELECT [Column1], [Column2]
FROM [dbo].[Test]
FOR JSON PATH
-- RESULT: '[{"Column1":"xxxx", "Column2":"HIJKLMN"}]'
Run Code Online (Sandbox Code Playgroud)
但当同一个非允许用户将结果保存在变量中时(主要目标),它不起作用:
DECLARE @var VARCHAR(64)
SET @var = (SELECT [Column1], [Column2] FROM [dbo].[Test] FOR JSON PATH)
SELECT @var --it should show a valid JSON...
-- RESULT: 'xxxx' <-- JSON LOSES …Run Code Online (Sandbox Code Playgroud)