我有这个查询
DECLARE @Test TABLE
(
RowID INT IDENTITY(1,1) PRIMARY KEY
,[Name]VARCHAR(10) NOT NULL
,tool VARCHAR(10) NOT NULL,
stam NVARCHAR(MAX)
);
INSERT @Test VALUES ('john', 'vocals','1');
INSERT @Test VALUES ('john', 'guitar','1');
INSERT @Test VALUES ('paul', 'vocals','1');
INSERT @Test VALUES ('paul', 'bass','1');
INSERT @Test VALUES ('george', 'vocals','1');
INSERT @Test VALUES ('george', 1,'1');
INSERT @Test VALUES ('ringo', 'vocals','1');
INSERT @Test VALUES ('ringo', 3,'1');
INSERT @Test VALUES ('ringo', 'drums','1');
INSERT @Test VALUES ('yoko', 'vocals','1');
INSERT @Test VALUES ('royi', 'vocals','1');
INSERT @Test VALUES ('royi', 'guitar','1');
;WITH PivotSource
AS
(
SELECT t.[Name], t.[tool]
FROM @Test t
)
SELECT *
FROM PivotSource
PIVOT ( max(tool) FOR tool IN ([vocals], [guitar], [bass],[drums]) ) pvt;
有什么方法可以替换 null
为""
(空字符串)吗?( 无需 修改CTE数据!)
使用:
SELECT pvt.Name
, isnull(pvt.[vocals], '') [vocals]
, isnull(pvt.[guitar], '') [guitar]
, isnull(pvt.[bass], '') [bass]
, isnull(pvt.[drums], '') [drums]
FROM PivotSource
PIVOT
(
max(tool)
FOR tool
IN ([vocals], [guitar], [bass], [drums])
) pvt;
输出:
Name vocals guitar bass drums
---------- ---------- ---------- ---------- ----------
george vocals
john vocals guitar
paul vocals bass
ringo vocals drums
royi vocals guitar
yoko vocals
问题内容: 我有一张这样的产品零件表: 部分 我想要一个查询,将返回这样的表: 在其实际实施中,将有数百万个产品零件 问题答案: 不幸的是,MySQL没有函数,但是您可以使用聚合函数和语句对其进行建模。对于动态版本,您将需要使用准备好的语句: 请参见带有演示的SQL Fiddle 如果只有几列,则可以使用静态版本:
我在使用PIVOT SQL脚本时遇到了一个“小”问题。我目前的解决方案基于类似的问题 动态枢轴 . 我已经写好了PIVOT脚本,基本上没问题。然而,我的情况是这样的,脚本输出类似这样的内容,而不是将唯一的条目放在单行上 而我所寻找的结果应该是这样的 这是脚本 我将不胜感激一些可以帮助我解决这个问题的指示。我在这里做了一个小提琴,由于某种奇怪的原因,它没有输出任何东西,但生成架构的所有代码都在那里
我尝试了另一篇文章中给出的这个例子,以了解关于相对于鼠标指针的缩放和平移。当所有东西都在网格上时,缩放就像预期的那样工作: 当缩放到左上角图像上的鼠标指针位置时,它将缩放到右上角图像中所见的准确位置。 如果某物被拖出网格,例如,枢轴开始“行为不端”:
问题内容: 好吧,我有一张看起来像这样的表 现在,我需要将其转换为: 我一直在看动态透视图示例,但是我似乎无法使其适合我的情况。 有人可以帮忙吗? 问题答案: 看下面的例子
问题内容: 示例选择: 输出: 是否可以按时间顺序对记录进行排序,排除列“月”和“年”?没有列出所有列。 UPD 需要: 就像是: 问题答案: 要对记录进行排序,可以将以下内容添加到sql的末尾 注意:枢轴列名称区分大小写,因此需要用引号引起来 这是完整的查询,仅选择您需要的列: