;WITH n AS
(
SELECT problemID, StationName, problemCode, ProblemCreateDate, probCount,
c = COUNT(*) OVER (PARTITION BY StationName, problemCode),
rn = ROW_NUMBER() OVER
(
PARTITION BY StationName, problemCode ORDER BY ProblemCreateDate DESC, problemID DESC
)
FROM dbo.tblProblems
)
SELECT problemID, StationName, problemCode, ProblemCreateDate, c
FROM n WHERE rn = 1;
という名前の別のテーブルがありtblCustomers
、列isAssistent
Type( bit
)があります
inner join
内部結合を試みましたが、複雑すぎて withのフィルターを適用しようとするとエラーが発生します
tblCustomers where tblCustomers.isAssistent =1
正しい構文の書き方を知って、とても感謝しています。
再編集
inner join tblCustomers on tblProblems.CustID = tblCustomers.custID
エラー、最後の試行の 1 つ
メッセージ 4104、レベル 16、状態 1、行 14 マルチパート識別子 "tblProblems.CustID" をバインドできませんでした。メッセージ 4104、レベル 16、状態 1、行 12 マルチパート識別子「tblproblems.problemID」をバインドできませんでした。メッセージ 4104、レベル 16、状態 1、行 12 マルチパート識別子 "tblproblems.custID" をバインドできませんでした。メッセージ 4104、レベル 16、状態 1、行 12 マルチパート識別子 "tblproblems.StationName" をバインドできませんでした。メッセージ 4104、レベル 16、状態 1、行 12 マルチパート識別子「tblproblems.problemCode」をバインドできませんでした。メッセージ 4104、レベル 16、状態 1、行 12 マルチパート識別子 "tblproblems.ProblemCreateDate" をバインドできませんでした。
これは私が行った野生の推測です:
;WITH n AS
(
SELECT tblCustomers.*,tblproblems.problemID, tblproblems.StationName, tblproblems.problemCode, tblproblems.ProblemCreateDate, tblproblems.probCount,
c = COUNT(*) OVER (PARTITION BY tblproblems.StationName, tblproblems.problemCode),
rn = ROW_NUMBER() OVER
(
PARTITION BY tblproblems.StationName, tblproblems.problemCode ORDER BY tblproblems.ProblemCreateDate DESC, tblproblems.problemID DESC
)
FROM dbo.tblProblems
inner join tblCustomers on tblProblems.CustID = tblCustomers.custID
)
SELECT tblCustomers.*, tblproblems.problemID, tblproblems.custID, tblproblems.StationName, tblproblems.problemCode, tblproblems.ProblemCreateDate, c
FROM n
inner join tblCustomers on tblProblems.CustID = tblCustomers.custID
WHERE rn = 1;
目的は、tblCustomers.isAssistent=1 の場合にのみ tblProblems の結果を選択することでした。