儘管我發現了類似於需要的東西,但我無法解決這個問題。SUM查詢的結果包含UNION ALL和CTE
所以,我會問我的例子。
(這是在延續我的上一個問題:select if there are more than n results but with conditions)
我的表:
| TimeId | Work_Role | User_Name | ---------------------------------- | 1 | users | Oran | | 2 | admin | Ray | | 3 | users | Oran | | 4 | servs | Amit | | 5 | admin | Oran | | 6 | users | Ray | | 7 | users | Oran | | 8 | servs | Amit | | 9 | admin | Oran | | 10 | users | Oran |
我使用CTE來顯示USER_NAME = 「奧蘭」 和Work_Role列表=「用戶」只有在表中有2個以上時纔有效。
另外,我使用Union all來收集另一部分,它的條件是:user_name =「Oran」和Work_Role =「admin」。
結果是:
| TimeId | Work_Role | User_Name | ---------------------------------- | 1 | users | Oran | | 3 | users | Oran | | 7 | users | Oran | | 10 | users | Oran | | 5 | admin | Oran | | 9 | admin | Oran |
我的第二部分(其中有我有問題)是計算上述結果多少行了。
在這種情況下,我預計:6
我的第一個結果代碼(這是工作的罰款):
WITH CTE AS(
SELECT *, cc = COUNT(*) OVER(PARTITION BY User_Name) FROM Table
)
SELECT *
FROM CTE
WHERE
Work_Role = 'users'
AND User_Name = 'Oran'
AND cc > 2
UNION ALL
SELECT *
FROM TABLE
WHERE
Work_Role = 'admin'
AND User_Name = 'Oran'
我怎樣才能總結線號最後的結果?
使用CTE時甚至可以完成它嗎?
NOTE: 這只是一個例子。在我真正的代碼,我必須使用「UNION ALL」 :-(
10X
感謝名單,但我給的例子是不是真正的代碼。不幸的是,真正的代碼迫使我使用「聯合所有」而不是「或」:-( – Yael
這是我的問題,迫使我使用「聯合所有」: http://stackoverflow.com/questions/27498044/i -want到返回的-同一商品,兩次在-SQL服務器 – Yael