4つの文字コードとその説明を持つテーブルがあります。 私は、単一の文字列に複数のエラーコードを持つ販売テーブルを持っています。 2つ以上のエラーの重みが互いに同じで、複数の結合された行を作成する場合を除いて、最高の重み付きエラーコードが結合されるようにするlikeを使用して結合を設計しました。部分文字列のSQL結合で、サブクエリで最大値を持つレコードが多すぎます
重みが等しい場合、私はちょうど
表のerrorCode
Code | Description | Weight
'0041' | 'data error' | 4
'0019' | 'format error' | 2
'0099' | 'missing creator' | 2
TABLE MyDataに私が手
ID | RespCode
1234 | '00410019'
1235 | '00990019'
結果
ID | RespCode | Description
1234 | '00410019' | 'data error'
1235 | '00990019' | 'format error'
1235 | '00990019' | 'missing creator'
(いずれかが行います)1件の結果が欲しいです
私は1235のために1つの結果しか望んでいませんが、サブ選択でMaxまたはTop 1を使用しても、私は2つを取得します。どのようにして結合された行を1つに制限できますか?
SELECT * FROM MyData
left JOIN ErrorCodes
ON MyData.RespCode
LIKE '%' + ErrorCodes.Code + '%'
AND ErrorCodes.Weight = (
SELECT MAX (Weight) FROM ErrorCodes
WHERE MyDate.RespCode LIKE '%' + ErrorCodes.Code + '%'
)
恐ろしいです!これはまさに私が必要としていたものです! –
ようこそ..ウインドウ/分析クエリーは、頑張ったOracleの仕事をしているときに私が学んだ最も有用なものの1つで、2005年にSQLSを使用するように切り替えると、MSが指を引き出して入れておくのを3年(そして、私の職場が実際にSQLS 2005を現代的なものにアップグレードしている間、別の痛い5年を待つ)。お友達が先導/出血している場合、あなたは最も幸運です! :) –