zoukankan      html  css  js  c++  java
  • 使用for xml path 分组查询

     SELECT 
    OLevel,
    WorkOrgID,
    WorkOrgName,
    PlanNum,
    PlanFinishNum,
    PlanUnFinishNum,
    PlanCanceledNum,
    PlanChangedNum,
    OrtherNum,
     PlanTime,
     ActualTime,
     RIGHT(PlanIDs,LEN(PlanIDs)-1) AS PlanIDs
     FROM (SELECT  
            ( CASE MIN(Parent)
                WHEN 'E13744A1-7E2C-42E8-8E7B-4D52F9E04A08' THEN MIN(ROLevel)
                ELSE MIN(OLevel)
              END ) AS OLevel ,
            ( CASE MIN(Parent)
                WHEN 'E13744A1-7E2C-42E8-8E7B-4D52F9E04A08'
                THEN MIN(RegulatoryOrgID)
                ELSE WorkOrgID
              END ) AS WorkOrgID ,
            ( CASE MIN(Parent)
                WHEN 'E13744A1-7E2C-42E8-8E7B-4D52F9E04A08' THEN MIN(RoName)
                ELSE WorkOrgName
              END ) AS WorkOrgName ,
            MIN(RegulatoryOrgID) AS RegulatoryOrgID ,
            COUNT(1) AS PlanNum ,
            SUM(CASE FormStatusCode
                  WHEN 'Finish' THEN 1
                  ELSE 0
                END) AS PlanFinishNum ,
            COUNT(CASE WHEN FormStatusCode != 'Finish' THEN 1
                       ELSE 0
                  END) AS PlanUnFinishNum ,
            SUM(CASE WHEN FormStatusCode = 'Canceled' THEN 1
                     ELSE 0
                END) AS PlanCanceledNum ,
            SUM(CASE WHEN FormStatusCode = 'Changed' THEN 1
                     ELSE 0
                END) AS PlanChangedNum ,
            SUM(CASE WHEN FormStatusCode IN ( 'Approved', 'Begining', 'Begin' )
                     THEN 1
                     ELSE 0
                END) AS OrtherNum ,
            SUM(CASE WHEN DATEDIFF(mi, PlanBeginTime, PlanEndTime) < 0 THEN 0
                     WHEN DATEDIFF(mi, PlanBeginTime, PlanEndTime) IS NULL THEN 0
                     ELSE DATEDIFF(mi, PlanBeginTime, PlanEndTime)
                END) AS PlanTime ,
            SUM(CASE WHEN DATEDIFF(mi, CheckInApproveTime, CheckOutApproveTime) < 0
                     THEN 0
                     WHEN DATEDIFF(mi, CheckInApproveTime, CheckOutApproveTime) IS NULL
                     THEN 0
                     ELSE DATEDIFF(mi, CheckInApproveTime, CheckOutApproveTime)
                END) AS ActualTime ,
            ( SELECT    ',' +''''+ CAST(wp.PlanID AS VARCHAR(40)) +''''
              FROM      dbo.PL_WorkPlan wp
                        LEFT JOIN dbo.PL_WorkDetail wd ON wd.PlanID = wp.PlanID
                        LEFT JOIN dbo.PT_WorkPoint pp ON wp.PlanID = pp.PlanID
                        INNER JOIN dbo.SEC_Organization o ON o.Id = wd.WorkOrgID
                        LEFT JOIN dbo.SEC_Organization RO ON ro.Id = wd.RegulatoryOrgID
              WHERE     wp.FormStatusCode NOT IN ( 'Draft', 'Approving' )
                        AND wd.WorkOrgName IS NOT NULL
                        
                        AND ( WorkOrgID = V.WorkOrgID )
            FOR
              XML PATH('')
            ) PlanIDs
    FROM    ( SELECT    wd.WorkTypeCode ,
                        wp.planid ,
                        wp.PlanBeginTime ,
                        wp.PlanEndTime ,
                        WP.FormStatusCode ,
                        PlanTypeCode ,
                        wd.WorkOrgID ,
                        wd.RegulatoryOrgID ,
                        o.Parent ,
                        wd.WorkOrgName ,
                        o.[Level] AS OLevel ,
                        RO.[Level] AS ROLevel,
                        Ro.NAME AS RoName,
                        CheckInApproveTime ,
                        CheckOutApproveTime
              FROM      dbo.PL_WorkPlan wp
                        LEFT JOIN dbo.PL_WorkDetail wd ON wd.PlanID = wp.PlanID
                        LEFT JOIN dbo.PT_WorkPoint pp ON wp.PlanID = pp.PlanID
                        INNER JOIN dbo.SEC_Organization o ON o.Id = wd.WorkOrgID
                        LEFT JOIN dbo.SEC_Organization RO ON ro.Id = wd.RegulatoryOrgID
              WHERE     wp.FormStatusCode NOT IN ( 'Draft', 'Approving' )
                        AND wd.WorkOrgName IS NOT NULL
                        
            ) V
    WHERE   1 = 1  
          and WorkTypeCode in ($WorkTypeCode$)
     and V.PlanBeginTime >= @BeginTime
     and V.PlanBeginTime < @EndTime
    {? and V.LineID = @LineID } 
            {? and  V.PlanTypeCode = @PlanTypeCode }
            {? and V.WorkOrgID = @WorkOrgID }
    GROUP BY 
            WorkOrgID ,
            WorkOrgName) 
          as  V2
            WHERE V2.WorkOrgID !='00000000-0000-0000-0000-000000000000'
            
  • 相关阅读:
    APP内跳转链接用INTENT,但是用系统浏览器,在内部还是要webview
    MNIST练习
    Trigger_word_detection_v1a
    Neural_machine_translation_with_attention_v4a
    Operations_on_word_vectors_v2a
    Improvise_a_Jazz_Solo_with_an_LSTM_Network_v3a-2
    Dinosaurus_Island_Character_level_language_model_final_v3b
    Building_a_Recurrent_Neural_Network_Step_by_Step_v3b
    Sequence model
    Face_Recognition_v3a
  • 原文地址:https://www.cnblogs.com/renzaijianghu/p/6111731.html
Copyright © 2011-2022 走看看