0
我有5列這樣SQL查詢,如果某個值出現在行
+----+-------------------------+-----------+--------+-----------+
| Id | CreateDate | CompanyId | UserId | IsEnabled |
+----+-------------------------+-----------+--------+-----------+
| 1 | 2016-01-02 23:40:46.517 | 1 | 1 | 1 |
| 2 | 2016-01-16 00:07:59.857 | 1 | 2 | 1 |
| 3 | 2016-01-25 15:17:54.420 | 3 | 3 | 1 |
| 25 | 2016-03-07 16:48:39.260 | 24 | 10 | 0 |
| 26 | 2016-03-07 16:48:39.263 | 25 | 2 | 0 |
+----+-------------------------+-----------+--------+-----------+
表一次以上(感謝http://www.sensefulsolutions.com/2010/10/format-text-as-table.html爲ASCII表!)
我試圖檢查如果一個UserId被記錄爲多個CompanyId的。
到目前爲止,我設法檢查,如果用戶ID發生通過使用此查詢
WITH T AS
(
SELECT * ,
Count(*) OVER (PARTITION BY UserId) as Cnt
From CompanyUser
)
select Distinct UserId
FROM T
Where Cnt >1
它正確返回2出現不止一個。
我卡在哪兒,我該如何參數化UserId並檢查一個Id是否被多個公司錄製。
'select count(distinct companyid)from T where userid = @ userid'? –
我之前曾嘗試過,它給出了一個錯誤,事實證明我需要在WITH之前以分號開頭。它現在的作品應該花我的時間,並閱讀錯誤說明:) –
@EgeBayrak不,你不需要分號來啓動一個cte。您需要用分號終止前面的語句。然而,用分號開始一個cte是非常普遍的做法。最終所有的陳述將被要求正確終止。從一開始,sql server一直非常懶散。有一些像MERGE這樣的語句在最後需要分號。 –