sql-server - SQL Server 2008 透视和连接
问题描述
我有 3 个包含数据的表:
表 1:类型
IdType LibelleType
-------------------
1 Type1
2 Type2
表 2:程序
IdProcedur LibelleProcedure
-------------------------------
1 Procedure1
2 Procedure2
表 3:信息
IdInfo IdType IdProcedure InfoValue
------------------------------------------------
1 1 1 11
2 1 2 12
3 2 1 21
4 2 2 22
我需要一个会产生这个输出的查询:
Procedure1 Procedure2
Type1 11 12
Type2 21 22
谢谢 !
解决方案
请检查以下。最后一个选择做数据透视。(我之前的查询只是为了准备数据集)
create table Type
(IDType INT,Label VARCHAR(100)
)
create table [PROC]
(IDProc INT, LabelProc varchar(100))
Create table INFO
(IDInfo INT, IDType INT, IDProc INT, INFOValue INT)
insert into Type
values(1,'Type1'),(2,'Type2')
insert into [PROC]
values(1,'Proc1'),(2,'Proc2')
insert into InFO
values(1,1,1,11),(2,1,2,12),(3,2,1,21),(4,2,2,22)
select * from Type
select * from [PROC]
select * from info
declare @labelforprocs varchar(max) = ''
,@sql NVARCHAR(MAX)
select @labelforprocs = CONCAT(@labelforprocs,QUOTENAME(LabelProc),',') from [PROC]
select @labelforprocs = LEFT(@labelforprocs,LEN(@labelforprocs)-1)
SET @sql =
'select * from
(
select T.Label,P.LabelProc,I.INFOValue from INFO I
INNER JOIN [PROC] P
ON I.IDPROC = P.IDProc
INNER JOIN TYPE T
on T.IDType = I.IDType
)SRC
PIVOT
(MAX(INFOValue)
FOR LabelProc in (' + @labelforprocs +
'))piv'
EXEC sp_executesql @sql
推荐阅读
- composer-php - 如何在 Windows 10 中更改作曲家版本
- react-native - 如何在 react-native 中保存和加载 tflite 版本的posenet?
- javascript - NestJS 事件发射器
- paddle-paddle - PaddleOCR 性能与 Tesseract 相比如何?
- python - 警告:张量流:模型是用形状构造的
- javascript - 从外部注入参数并动态缩小 js
- go - 如何在 fyne 中调整输入框的大小
- java - 突出显示可导航单元格中的文本
- python - 并行运行服务器和异步队列
- php - WordPress 调试问题:无法添加菜单项或新页面