簡體   English   中英

SQL Server 2005中交叉應用的替代查詢

[英]Alternate query for cross apply in SQL Server 2005

在此處輸入圖片說明

查詢:

SELECT DISTINCT 
    CREATEDBY, PITCHES, [COUNT], REVENUE, ORD 
FROM 
    @TEMPMAILER
CROSS APPLY  
    (VALUES ('Total Active', CNTACTIVE, TOTALREVACT, 0),
            ('In Suspect', CNTSUSPECT, TOTALREVS, 1),
            ('In Prospect', CNTPROSPECT, TOTALREVP, 2),
            ('In Approach', CNTAPPROACH, TOTALREVA, 3),
            ('In Negotiation', CNTNEGO, TOTALREVN, 4),
            ('In Closure', CNTCLOSURE, TOTALREVC, 5),
            ('In Order', CNTORDER, TOTALREVO, 6)) V (PITCHES,[COUNT], REVENUE, ORD)

我希望數據以第二種形式出現在圖像中,而不使用交叉應用。

您沒有任何理由要避免CROSS APPLY

我認為這是因為您當前的查詢在2005年不起作用,並且您得出了錯誤的結論,那就是這是APPLY的錯誤。 您的查詢在2005年不起作用的原因是因為VALUES而不是APPLY

這將在2005年生效。

SELECT DISTINCT CREATEDBY,
                PITCHES,
                [COUNT],
                REVENUE,
                ORD
FROM   @TEMPMAILER
CROSS APPLY (SELECT 'Total Active',CNTACTIVE,TOTALREVACT,0 UNION ALL
                SELECT 'In Suspect',CNTSUSPECT,TOTALREVS,1 UNION ALL
                SELECT 'In Prospect',CNTPROSPECT,TOTALREVP,2 UNION ALL
                SELECT 'In Approach',CNTAPPROACH,TOTALREVA,3 UNION ALL
                SELECT 'In Negotiation',CNTNEGO,TOTALREVN,4 UNION ALL
                SELECT 'In Closure',CNTCLOSURE,TOTALREVC,5 UNION ALL
                SELECT 'In Order',CNTORDER,TOTALREVO,6               
                )V(PITCHES,[COUNT],REVENUE,ORD)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM