2016-05-12 69 views
0

對不起,打擾你,但我有一個工會問題的問題;我試圖實現我在其他文章中閱讀的相同邏輯,但它不適合我,請幫助一下?SQL查詢 - 選擇的工會數

這是我的代碼: /數據聲明

/*where i should make the count*/ 

/*first select*/ 

UNION 

/*second select*/ 
/*in the where of the second select I have a case with the following data*/ 
CASE 
    WHEN ((@case='other') AND (cfv.value like '%,' + cast (@today as VARCHAR) or cfv.value like '%' + cast (@today as VARCHAR) 
    or cfv.value like '%' + cast (@today as VARCHAR)+',0' 
    or cfv.value like '%' + cast (@today as VARCHAR)+',0,1' 
    or cfv.value like '%' + cast (@today as VARCHAR)+',1')) 
    then 1 
    WHEN ((@case ='zero') AND(cfv.value='0')) THEN 1 
    WHEN ((@case ='one') AND(cfv.value='1' or cfv.value='0,1')) THEN 1 
    ELSE 0 
END = 1 

,並沒有指望,所以我想這應該是很容易的,但我不明白這種重結果:S Just a column of elements but I'd like to have the number of the element present in this case 2

感謝這麼多提前

+0

太多的代碼,沒有足夠的解釋什麼問題是什麼,你的預期輸出應該是什麼。請編輯你的問題。 – PyNoob

回答

1

在你的地方有一個case語句不應該搞亂語法。這可能是別的。

確保在執行子查詢時給它一個別名。

SELECT COUNT(*) 
FROM (
    /*first select*/ 
    UNION 
    /*second select*/ 
    WHERE 
    CASE 
     WHEN ((@case='other') 
      AND (cfv.value LIKE '%,' + CAST(@today AS VARCHAR) 
       OR cfv.value LIKE '%' + CAST(@today AS VARCHAR) 
       OR cfv.value LIKE '%' + CAST(@today AS VARCHAR)+',0' 
       OR cfv.value LIKE '%' + CAST(@today AS VARCHAR)+',0,1' 
       OR cfv.value LIKE '%' + CAST(@today AS VARCHAR)+',1')) 
     THEN 1 
     WHEN ((@case ='zero') AND (cfv.value='0')) THEN 1 
     WHEN ((@case ='one') AND (cfv.value='1' OR cfv.value='0,1')) THEN 1 
     ELSE 0 
    END = 1 
) AS alias --<<-- 
+0

我會盡力讓你知道;)tkssss –

+0

這個工作適合你嗎? – fqhv

+0

nop,但我用另一種方式解決,我不記得我是怎麼做的,但如果你想我會盡快發佈解決方案 –

0

如果你想獲得所選的所有記錄的計數,你可以這樣做:

SELECT COUNT(*) FROM 
(
    SELECT First... 
    UNION 
    SELECT Second... 
) AS CountTable 

只是包裝你的整個查詢在其他SELECT STA從那裏開始計數和計數。

+0

我試圖做到這一點,但看到最後一個元素是它給了我一個錯誤:S –

+0

CASE語句不應該導致問題。查詢在沒有'SELECT COUNT(*)'包裝的情況下是否正常運行並且給出了ID列表? – PhillipXT

+0

是的,給我一個例外,只是當我把計數(*) –

0

你可以嘗試將其包裝在一個選擇。

SELECT t.CompanyID, COUNT(*) 
FROM (YOUR UNION QUERY) t 
GROUP BY t.CompanyID 
+0

同樣的問題,當我關閉第二個選擇大小寫的END = 1附近的括號時,它給了我一個錯誤:S –

+0

查詢是否正常運行而不添加COUNT()? – PhillipXT

+0

是的,它確實如此:S,並給我結果,我在我的第一篇文章中顯示:S –