SELECT
(select CASE
WHEN DP_ART_HEAD.KPP_KAT_ART_COD = 'M1' THEN
ROUND(DP_ART_LINES.XONDRIKH - DP_ART_LINES.XONDRIKH * DP_ART_LINES.POSOSTO_EKP_PROT/100, 2)
WHEN DP_ART_HEAD.KPP_KAT_ART_COD = 'M2' THEN
DP_ART_LINES.TIM_MON
ELSE
DP_ART_LINES.TIM_MON
end AS 'NIKOS'
FROM DP_ART_LINES
JOIN AP_APO_HEAD ON DP_ART_LINES.EID_CODE = AP_APO_HEAD.EID_CODE
AND DP_ART_LINES.KPP_APO_CODE = AP_APO_HEAD.KPP_APO_CODE
JOIN DP_ART_HEAD ON DP_ART_LINES.RN_DP_ART_HEAD = DP_ART_HEAD.RN_DP_ART_HEAD
WHERE DP_ART_LINES.EID_CODE = AP_APO_HEAD.EID_CODE
),
DP_ART_HEAD.KPP_KAT_ART_COD,
DP_ART_LINES.EID_CODE AS 'Κωδικός',
AP_APO_HEAD.EID_PERIGR AS 'Είδος',
DP_ART_LINES.POSOT AS 'Ποσότης',
DP_ART_LINES.XONDRIKH AS 'Τιμή Χονδρικής',
DP_ART_LINES.POSOSTO_EKP_PROT AS 'Έκπτωση',
DP_ART_LINES.FL_DORO AS 'Δώρο'
FROM DP_ART_LINES
JOIN AP_APO_HEAD ON DP_ART_LINES.EID_CODE = AP_APO_HEAD.EID_CODE
AND DP_ART_LINES.KPP_APO_CODE = AP_APO_HEAD.KPP_APO_CODE
JOIN DP_ART_HEAD ON DP_ART_LINES.RN_DP_ART_HEAD = DP_ART_HEAD.RN_DP_ART_HEAD
最終結果は場合に選択範囲内を選択し、 "ねじれ"
メッセージ512、レベル16、状態1、行1 サブクエリは複数の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。
どうやら私は単一値受容体のcase文から値の束を押してみようとしています。 これについてもっと良い方法がありますか(もちろんあります)。
、いくつかのサンプルデータを追加、すなわち 'table'を作成し、'誰かが実際にあなたのコードを実行することが可能にする、サンプルデータでinto'挿入し使用していくつかのデータを含めてください。これは、人々がコードをよりよく理解し、よりよくテストできるようにするためです。 また、あなたの期待リターンは?あなたはどんな結果セットを期待しますか? – Cenderze
エラーメッセージは非常に明確で、サブクエリは1つ以上の値を返しました。しかし、サンプルデータや望みの結果がなければ答えにくいですから、質問を編集してそれらを含めるようにしてください。 –
サブクエリのwere句に追加することによって、そのサブクエリを外側のクエリに関連付けることになります。 'WHERE DP_ART_LINES.EID_CODE = AP_APO_HEAD.EID_CODEとDP_ART_LINES.EID_CODE = outerQuery.EID_CODE'のようなものです。ここで、outerQueryは外部クエリのDP_ART_LINESのエイリアスになります – scsimon