我有两张桌子,一张有主记录,另一张有主表的详细信息。我需要如下所示的输出。
表1:
ID描述
1个再试样品
2再试样本1
表2:
B、D、B、D、B、C、B、B、S、B、B、
1
2
(3)暗中性值
4
5
6
我需要如下所示的输出
…/T1597-1996技术技术。。
…/T1397-1996技术技术。。
…/T1597-1998样品、技术等。。
试例1。。
请帮助我解决这个问题。
发布于 2020-09-24 13:04:36
可以使用PIVOT将行转换为列。MS SQL Server的正式文档
发布于 2020-09-24 13:18:24
请在此小提琴中为您的问题找到可能的解决方案。
你的想法会产生很多专栏。解决方案可以是使用Sample列进行枢轴操作。cte正在保存一个视图,以使用来自table1的示例描述。PIVOT是基于样本的。CASE WHEN用来带来零,而不是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;https://stackoverflow.com/questions/64046187
复制相似问题