【问题标题】:SQL Pivot from an Access Pivot queryAccess Pivot 查询中的 SQL Pivot
【发布时间】:2016-01-29 18:45:38
【问题描述】:

我有以下需要转换为 SQL 的 Access 查询 -

TRANSFORM 
Sum([anaes_downtime]![ANAESENDTIME]-[anaes_downtime]![anaesstarttime])/24/60 AS Expr1

SELECT downtime_seq.THEATRE, downtime_seq.OPSESSION, downtime_seq.OPDATE
FROM ANAES_Downtime
INNER JOIN downtime_seq ON ANAES_Downtime.opnumber = downtime_seq.opnumber
WHERE (((ANAES_Downtime.ANAESSTARTTIME) <> 0 )
    AND ((ANAES_Downtime.ANAESENDTIME) <> 0 ))
GROUP BY downtime_seq.THEATRE, downtime_seq.OPSESSION, downtime_seq.OPDATE
PIVOT "d" & [opseq] IN ("d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13","d14","d15","d16","d17","d18","d19","d20");

我了解 sql pivot 的基础知识,但无法成功转换。有什么帮助吗?

【问题讨论】:

标签: sql-server tsql ms-access sql-server-2012 pivot


【解决方案1】:

我使用 CASE 语句找到了我的问题的答案 -

SELECT ad.THEATRE, ad.OPSESSION, ad.OPDATE,
   SUM(CASE WHEN opseq = 0
        THEN ad.ANAESENDTIME - ad.anaesstarttime ELSE 0 END) AS 'd0',
   SUM(CASE WHEN opseq = 1
        THEN ad.ANAESENDTIME - ad.anaesstarttime ELSE 0 END) AS 'd1',
   SUM(CASE WHEN opseq = 2
        THEN ad.ANAESENDTIME - ad.anaesstarttime ELSE 0 END) AS 'd2',
   SUM(CASE WHEN opseq = 3
        THEN ad.ANAESENDTIME - ad.anaesstarttime ELSE 0 END) AS 'd3',
   SUM(CASE WHEN opseq = 4
        THEN ad.ANAESENDTIME - ad.anaesstarttime ELSE 0 END) AS 'd4',
   SUM(CASE WHEN opseq = 5
        THEN ad.ANAESENDTIME - ad.anaesstarttime ELSE 0 END) AS 'd5'...    

 ...FROM #ANAES_Downtime ad INNER JOIN #DowntimeSeq ds ON ad.opnumber = ds.opnumber

WHERE ad.ANAESSTARTTIME <> 0 AND  ad.ANAESENDTIME <> 0
GROUP BY ad.THEATRE, ad.OPSESSION, ad.OPDATE
ORDER BY ad.THEATRE, ad.OPSESSION, ad.OPDATE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多