用于将行转换为列的SQL Select查询

用于将行转换为列的SQL Select查询,sql,pivot,Sql,Pivot,我有两个表,一个表有主记录,另一个表有主表的详细信息。我需要如下所示的输出 表1: ID描述 1个样本 2样本1 表2: ID Table1Id块日期样本已收集 1c 2020年9月24日5 2 1 D 2020年9月24日4 3 2 C 2020年9月24日7 4 2 D 2020年9月24日6 5 1c 2020年9月25日2 6 2 D 2020年9月25日8 我需要如下所示的输出 2020年9月24日2020年9月24日2020年9月25日2020年9月25日……。 C D C D……。

我有两个表,一个表有主记录,另一个表有主表的详细信息。我需要如下所示的输出

表1:

ID描述
1个样本
2样本1

表2:

ID Table1Id块日期样本已收集
1c 2020年9月24日5
2 1 D 2020年9月24日4
3 2 C 2020年9月24日7
4 2 D 2020年9月24日6
5 1c 2020年9月25日2
6 2 D 2020年9月25日8

我需要如下所示的输出

2020年9月24日2020年9月24日2020年9月25日2020年9月25日……。
C D C D……。
样本5 4 2 0……。
样本1 7 6 0 8……。



请帮助我解决此查询。

您可以使用
PIVOT
将行转换为列

请为您在这方面的问题找到可能的解决方案

你的想法会产生许多专栏。解决方案可以是使用
示例
列作为轴心。
cte
正在保存一个视图,以使用表1中的样本描述。
PIVOT
基于样本。使用而不是
NULL
时出现的
情况

WITH cte AS (SELECT table2.ID, table1.Description, table2.Block, table2.DateBlock, table2.SampleCollected
FROM table2
JOIN table1
ON table2.SampleID = table1.ID)
SELECT Block, DateBlock,
  CASE WHEN [Sample] IS NULL THEN 0 ELSE [Sample] END AS Sample, 
  CASE WHEN [Sample1] IS NULL THEN 0 ELSE [Sample1] END AS Sample1
FROM (
SELECT *
FROM cte) AS sourcetable
PIVOT  
(  
SUM(SampleCollected)  
FOR Description IN ([Sample], [Sample1])  
) AS PivotTable
ORDER BY DateBlock, Block;

您使用的是哪种DBMS产品?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加。谢谢你的回复。是,输出结果应为多个列。描述将类似于“样本”、“样本1”、“样本2”等。。。2020年9月24日2020年9月24日2020年9月25日2020年9月25日……。。样本5 4 2 0……。。样本1 7 6 0 8……。。