首页 > 解决方案 > 如何将表值带入临时表

问题描述

我有一个 sql 查询,其中 SQL Server 输出数据看起来像这样

计划应用程序 保留应用程序 未保留的应用程序
30 20 10

我想将此输出更改为 sql server #temp 表,如下所示:

类别 数数
计划应用程序 30
保留应用程序 20
未保留的应用程序 10

一直在尝试使用 Pivot,但我认为我做错了。

代码:

SELECT

         COUNT(x.Scheduled) AS ScheduledAppts,

         COUNT(x.KeptEncounters) AS KeptAppts,

         COUNT(x.UnkeptEncounters) AS UnkeptAppts

   FROM (

         SELECT DISTINCT

                  COUNT(frz.TotalAppt) AS Scheduled,

                  CASE

                       WHEN frz.PDEncounters > 0 THEN

                       COUNT(frz.PDEncounters)

                  END AS KeptEncounters,

                  CASE

                       WHEN frz.PDEncounters = 0 THEN

                       COUNT(frz.PDEncounters)

                  END AS UnkeptEncounters,


           FROM [CDW].[dbo].[Fact_FREEZEPOLICE] frz

   ) x

标签: sql-serverpivottemp-tables

解决方案


你实际上想在这里UNPIVOT -

DECLARE @T TABLE (ScheduledAppts INT, KeptAppts INT, UnkeptAppts INT)

INSERT INTO @T (ScheduledAppts, KeptAppts, UnkeptAppts)
SELECT 30, 20, 10

SELECT [Category]
    ,[Count]
FROM (
    SELECT ScheduledAppts
        ,KeptAppts
        ,UnkeptAppts
    FROM @T
    ) P
UNPIVOT([Count] FOR [Category] IN (
            ScheduledAppts
            ,KeptAppts
            ,UnkeptAppts
            )) AS UnPvt

输出:

类别 数数
计划应用程序 30
保留应用程序 20
未保留的应用程序 10

参考:在sql server中将列转换为行及其各自的数据


推荐阅读