2014-01-22 66 views
0

我有這個SELECT DISTINCT SQL查詢,我想實現在TotalPaidPerEvent列將總和k.akce = q.akce AND z.kod - q.zpro總和,其中條件 - 多部分組成的標識符「t.column」無法綁定

我試過OUTER APPLY但它似乎是獲得每個z.kod相同的SUM。所有我想要實現的是,這將是獨一無二的計數k.akce = q.akce AND z.kod = q.zpro

SELECT DISTINCT 
    k.akce, 
    z.firma, 
    z.osoba, 
    z.kod, 
    qnt.TotalPaidPerEvent 
FROM zprost z 
OUTER APPLY (
    SELECT SUM(q.zaplac) AS TotalPaidPerEvent 
    FROM klient q 
    WHERE z.kod = q.zpro 
    ) qnt 
LEFT JOIN klient k 
    ON k.zpro = z.kod 
WHERE rocnik = 2014; 

當我嘗試這樣做: 任何有助於實現這一目標?

OUTER APPLY (SELECT SUM(q.zaplac) AS TotalPaidPerEvent FROM klient q WHERE z.kod=q.zpro AND k.akce = q.akce) qnt 

我得到以下信息:

The multi-part identifier 'k.akce' could not be bound.

預先感謝您的時間。

+0

你能添加顯示錯誤,並且表架構完整的查詢? – Tanner

+0

Re。錯誤:您需要在引用'outer apply'之前加入'k(即klient)' –

回答

1

您需要在使用前定義k。試試這個:

SELECT DISTINCT k.akce, z.firma, z.osoba, z.kod, qnt.TotalPaidPerEvent 
FROM zprost z LEFT JOIN 
    klient k 
    ON k.zpro = z.kod OUTER APPLY 
    (SELECT SUM(q.zaplac) AS TotalPaidPerEvent 
     FROM klient q 
     WHERE z.kod = q.zpro and k.akce = q.akce 
    ) qnt 
WHERE rocnik = 2014; 

不過,我覺得有以下可能會做同樣的事情:

SELECT DISTINCT k.akce, z.firma, z.osoba, z.kod, 
     sum(zaploc) over (partition by z.kod, k.akce) as TotalPaidPerEvent 
FROM zprost z LEFT JOIN 
    klient k 
    ON k.zpro = z.kod 
WHERE rocnik = 2014; 
+0

最後我使用了第一個示例,第二個示例出現了'關鍵字'WHERE'附近語法不正確的問題。無論如何,這對我幫助很大。 – Marek

+0

@Marek。 。 。再試一次。我在代碼尾部留下了混亂的代碼。 –

相關問題