首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server将一列视为两列

Server将一列视为两列
EN

Stack Overflow用户
提问于 2017-05-16 13:05:21
回答 1查看 62关注 0票数 0

表看起来如下:

对于相同的RDATETAGNAME (如'WOJ11_%' ),应该:

对于任何帮助,非常感谢。

代码语言:javascript
复制
CREATE TABLE [dbo].[RD](
    [RDATE] [datetime] NULL,
    [TAGNAME] [nvarchar](50) NULL,
    [RVALUE] [float] NULL,
    [RMINVALUE] [float] NULL,
    [RMAXVALUE] [float] NULL
) ON [PRIMARY]

INSERT INTO [dbo].[RD]
VALUES
('2017-04-04 18:00:00.000', 'WOJ11_Q1', 0, 0, 0),
('2017-04-04 18:00:00.000', 'WOJ11_P2', 0, 0, 0),
('2017-04-04 18:00:00.000', 'WOJ11_P1', 0, 0, 0),
('2017-04-04 19:00:00.000', 'WOJ11_Q1', 65.12, 61.52, 68.52),
('2017-04-04 19:00:00.000', 'WOJ11_P2', 5.82833333333333, 5.796, 5.874),
('2017-04-04 19:00:00.000', 'WOJ11_P1', 6.18733333333333, 6.158, 6.227),
('2017-04-04 20:00:00.000', 'WOJ11_Q1', 75.72, 72.68, 77.44),
('2017-04-04 20:00:00.000', 'WOJ11_P2', 5.7345, 5.698, 5.776),
('2017-04-04 20:00:00.000', 'WOJ11_P1', 6.07925, 6.04, 6.128),
('2017-04-04 21:00:00.000', 'WOJ11_Q1', 72.2, 68.32, 79.56),
('2017-04-04 21:00:00.000', 'WOJ11_P2', 5.80575, 5.688, 5.884),
('2017-04-04 21:00:00.000', 'WOJ11_P1', 6.109, 6.021, 6.168),
('2017-04-04 22:00:00.000', 'WOJ11_Q1', 66.48, 59.68, 70.72),
('2017-04-04 22:00:00.000', 'WOJ11_P2', 5.86675, 5.766, 5.972),
('2017-04-04 22:00:00.000', 'WOJ11_P1', 6.175, 6.119, 6.236);

'WOJ11_%'的输出表(3个标记)应该如下所示:

代码语言:javascript
复制
CREATE TABLE [dbo].[RD_OUTPUT](
    [RDATE] [datetime] NULL,
    [TAGNAME_P1_RVALUE] [float] NULL,
    [TAGNAME_P1_RMINVALUE] [float] NULL,
    [TAGNAME_P1_RMAXVALUE] [float] NULL,
    [TAGNAME_P2_RVALUE] [float] NULL,
    [TAGNAME_P2_RMINVALUE] [float] NULL,
    [TAGNAME_P2_RMAXVALUE] [float] NULL,
    [TAGNAME_Q1_RVALUE] [float] NULL,
    [TAGNAME_Q1_RMINVALUE] [float] NULL,
    [TAGNAME_Q1_RMAXVALUE] [float] NULL
) ON [PRIMARY]

具有以下价值:

代码语言:javascript
复制
INSERT INTO [dbo].[RD_OUTPUT]
VALUES
('2017-04-04 18:00:00.000', 0, 0, 0, 0, 0, 0, 0, 0, 0),
('2017-04-04 19:00:00.000', 6.18733333333333, 6.158, 6.227, 5.82833333333333, 5.796, 5.874, 65.12, 61.52, 68.52),
('2017-04-04 20:00:00.000', 6.07925, 6.04, 6.128, 5.7345, 5.698, 5.776, 75.72, 72.68, 77.44),
('2017-04-04 21:00:00.000', 6.109, 6.021, 6.168, 5.80575, 5.688, 5.884, 72.2, 68.32, 79.56),
('2017-04-04 22:00:00.000', 6.175, 6.119, 6.236, 5.86675, 5.766, 5.972, 66.48, 59.68, 70.72);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-16 13:37:18

您可以使用简单的枢轴。

代码语言:javascript
复制
select * from (
select * from #yourtable where Tagname like 'WOJ11_%' ) a
pivot (max(RValue) for TagName in ([WOJ11_P1],[WOJ11_P2],[WOJ11_Q1])) p

如果您可能需要执行动态查询来生成列并在" in“子句中提供多个标签名

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44002330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档