关键字“FROM”附近的语法不正确。 [英] Incorrect syntax near the keyword 'FROM'.

查看:73
本文介绍了关键字“FROM”附近的语法不正确。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应该创建XML输出文件的代码。我有一切正常工作,除了收到来自的错误:

I have a code that is supposed to create an XML output file. I have everything working except getting an error on the from:

有关为何会这样做的任何想法?

Any thoughts as to why this would be?

推荐答案

不运行它:语法上没有错误。

Without running it: It is syntactical error free.

以正确的格式开始,例如

Start with proper formatting, e.g.

SELECT (   SELECT   'ADD' AS [@action-code] ,
                    'CLINICAL' AS [@data] ,
                    'OUTPATIENT' AS [@type] ,
                    '1.0' AS [@version] ,
                    (   SELECT CONVERT(VARCHAR(10), CAST(GETDATE() AS DATE), 110) AS [create-date] ,
                               CONVERT(VARCHAR(5), GETDATE(), 108) AS [create-time] ,
                               'xxxxx' AS [create-by] ,
                               'SQL2008' AS version ,
                               'SQL' AS [create-by-tool]
                        FOR XML PATH('file-audit-data'), TYPE, ELEMENTS ) ,
                    (   SELECT [provider-id] ,
                               [npi] ,
                               (   SELECT [first-name] ,
                                          [last-name] ,
                                          birthdate ,
                                          sex ,
                                          race ,
                                          ethnic ,
                                          [postal-code] ,
                                          (   SELECT 'ED-THROUGHPUT' AS [@measure-set] ,
                                                     [encounter-date] ,
                                                     [arrival-time] ,
                                                     a.[patient-id] ,
                                                     (   SELECT DISCHGCODE AS [@answer-code] ,
                                                                'DISCHGCODE' AS [@question-cd] ,
                                                                '0' AS [@row-number]
                                                         FROM   POP2 detail
                                                         WHERE  detail.[patient-id] = POP2.[patient-id]
                                                         FOR XML PATH('detail'), TYPE ) ,
                                                     (   SELECT EDDEPARTDT AS [@answer-code] ,
                                                                'EDDEPARTDT' AS [@question-cd] ,
                                                                '0' AS [@row-number]
                                                         FROM   POP2 detail
                                                         WHERE  detail.[patient-id] = POP2.[patient-id]
                                                         FOR XML PATH('detail'), TYPE ) ,
                                                     (   SELECT EDDEPARTTM AS [@answer-code] ,
                                                                'EDDEPARTTM' AS [@question-cd] ,
                                                                '0' AS [@row-number]
                                                         FROM   POP2 detail
                                                         WHERE  detail.[patient-id] = POP2.[patient-id]
                                                         FOR XML PATH('detail'), TYPE ) ,
                                                     (   SELECT emcode AS [@answer-code] ,
                                                                'EMCODE' AS [@question-cd] ,
                                                                '0' AS [@row-number]
                                                         FROM   POP2 detail
                                                         WHERE  detail.[patient-id] = POP2.[patient-id]
                                                         FOR XML PATH('detail'), TYPE ) ,
                                                     (   SELECT PRINDX AS [@answer-code] ,
                                                                'PRINDX ' AS [@question-cd] ,
                                                                '0' AS [@row-number]
                                                         FROM   POP2 detail
                                                         WHERE  detail.[patient-id] = POP2.[patient-id]
                                                         FOR XML PATH('detail'), TYPE ) ,
                                                     (   SELECT pmtsrce AS [@answer-code] ,
                                                                'PMTSRCE' AS [@question-cd] ,
                                                                '0' AS [@row-number]
                                                         FROM   POP2 detail
                                                         WHERE  detail.[patient-id] = POP2.[patient-id]
                                                         FOR XML PATH('detail'), TYPE )
                                              FROM   POP2 x
                                              WHERE  x.[patient-id] = [mhtest].[dbo].[pop2].[patient-id]
                                              FOR XML PATH('encounter'), TYPE, ELEMENTS )
                                   FROM   [mhtest].[dbo].[vw_RPT_ADHOC_DATA_DUMP] z
                                   WHERE  z.[n_PATIENT_ID] = [mhtest].[dbo].[pop2].[patient-id]
                                   FOR XML PATH('patient'), TYPE, ELEMENTS )
                        FROM   [mhtest].[dbo].[pop2] z
                        WHERE  z.[patient-id] = [mhtest].[dbo].[pop2].[patient-id]
                        FOR XML PATH('provider'), TYPE, ELEMENTS )
           FROM     [mhtest].[dbo].[pop2] y
           WHERE    y.[patient-id] = [mhtest].[dbo].[pop2].[patient-id]
           ORDER BY NEWID()
           FOR XML PATH('submission'), TYPE, ELEMENTS ) AS OP18
INTO   TOP18z;

btw,我会通过规范化来简化核心。例如

btw, I would simplify the core by normalizing it. E.g.

DECLARE @POP2 TABLE (
    ID INT ,
    DISCHGCODE INT ,
    EDDEPARTDT INT
);
INSERT INTO @POP2
VALUES ( 1, 2, 3 );

-- INSTEAD of
SELECT 'ED-THROUGHPUT' AS [@measure-set] ,
       (   SELECT detail.DISCHGCODE AS [@answer-code] ,
                  'DISCHGCODE' AS [@question-cd] ,
                  '0' AS [@row-number]
           FROM   @POP2 detail
           FOR XML PATH('detail'), TYPE ) ,
       (   SELECT detail.EDDEPARTDT AS [@answer-code] ,
                  'EDDEPARTDT' AS [@question-cd] ,
                  '0' AS [@row-number]
           FROM   @POP2 detail
           FOR XML PATH('detail'), TYPE )
FROM   @POP2 x
FOR XML PATH('encounter'), TYPE, ELEMENTS;

/*
<encounter measure-set="ED-THROUGHPUT">
  <detail answer-code="2" question-cd="DISCHGCODE" row-number="0" />
  <detail answer-code="3" question-cd="EDDEPARTDT" row-number="0" />
</encounter>
*/

-- Normalized
WITH Normalized
AS ( SELECT *
     FROM   @POP2 P
         UNPIVOT (   [Value]
                     FOR [Attribute] IN ( DISCHGCODE, EDDEPARTDT )) U )
SELECT 'ED-THROUGHPUT' AS [encounter/@measure-set] ,
       (   SELECT N.Attribute AS [@question-cd] ,
                  N.Value AS [@answer-code]
           FROM   Normalized N
           FOR XML PATH('detail'), TYPE ) AS [encounter]
FOR XML PATH('patient'), TYPE;

/*
<patient>
  <encounter measure-set="ED-THROUGHPUT">
    <detail question-cd="DISCHGCODE" answer-code="2" />
    <detail question-cd="EDDEPARTDT" answer-code="3" />
  </encounter>
</patient>
*/


这篇关于关键字“FROM”附近的语法不正确。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆