2017-09-23 11 views
0

以下は、レコードを正しく返すストアドプロシージャ内のSQL文です。ただし、MEMBER_IDの値も必要です。これをselectステートメントに追加すると、レコードは返されません。私はCASTとCONVERTを試しましたが、結果はありません。参照のために、フィールドMEMBER_IDは両方のテーブルのキー値です。 INTです。SQL文の問題

SELECT 
    CONCAT(WEBFSS.MEMBERS.LAST_NAME, ", " ,WEBFSS.MEMBERS.FIRST_NAME) As Name, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _mon THEN WEBFSS.SCHEDULE.QTY END) AS MEALS1, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _mon THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS1, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _tue THEN WEBFSS.SCHEDULE.QTY END) AS MEALS2, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _tue THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS2, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _wed THEN WEBFSS.SCHEDULE.QTY END) AS MEALS3, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _wed THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS3, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _thu THEN WEBFSS.SCHEDULE.QTY END) AS MEALS4, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _thu THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS4, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _fri THEN WEBFSS.SCHEDULE.QTY END) AS MEALS5, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _fri THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS5 
FROM WEBFSS.SCHEDULE 
    INNER JOIN WEBFSS.MEMBERS 
    ON WEBFSS.SCHEDULE.MEMBER_ID = WEBFSS.MEMBERS.MEMBER_ID 
WHERE 
    (WEBFSS.SCHEDULE.DATE BETWEEN _mon AND _fri) 
GROUP BY 
WEBFSS.MEMBERS.LAST_NAME, WEBFSS.MEMBERS.FIRST_NAME ; 

これは動作しません:

SELECT 
    SCHEUDLE.MEMBER_ID, 
    CONCAT(WEBFSS.MEMBERS.LAST_NAME, ", " ,WEBFSS.MEMBERS.FIRST_NAME) As Name, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _mon THEN WEBFSS.SCHEDULE.QTY END) AS MEALS1, 
+1

"SCHEUDLE'"?あなたのテーブル名のスペルを間違えたようです。しかし、あなたがこの投稿を書いたときにあなたはそれを間違って入力しただけかもしれません。将来、このような間違いを避けるために、コピー&ペーストを使用してください。 –

+1

エラーが発生した場合は、投稿に完全なエラーメッセージを含めてください。 –

答えて

1

SCHEUDLE.MEMBER_IDCONCAT(WEBFSS.MEMBERS.LAST_NAME, ", " ,WEBFSS.MEMBERS.FIRST_NAME)によってグループに試してみてください。

SELECT 
    SCHEUDLE.MEMBER_ID, 
    CONCAT(WEBFSS.MEMBERS.LAST_NAME, ", " ,WEBFSS.MEMBERS.FIRST_NAME) As Name, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _mon THEN WEBFSS.SCHEDULE.QTY END) AS MEALS1, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _mon THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS1, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _tue THEN WEBFSS.SCHEDULE.QTY END) AS MEALS2, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _tue THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS2, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _wed THEN WEBFSS.SCHEDULE.QTY END) AS MEALS3, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _wed THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS3, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _thu THEN WEBFSS.SCHEDULE.QTY END) AS MEALS4, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _thu THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS4, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _fri THEN WEBFSS.SCHEDULE.QTY END) AS MEALS5, 
    SUM(CASE WHEN WEBFSS.SCHEDULE.DATE = _fri THEN WEBFSS.SCHEDULE.ENSURE END) AS ENS5 
FROM WEBFSS.SCHEDULE 
    INNER JOIN WEBFSS.MEMBERS 
    ON WEBFSS.SCHEDULE.MEMBER_ID = WEBFSS.MEMBERS.MEMBER_ID 
WHERE 
    (WEBFSS.SCHEDULE.DATE BETWEEN _mon AND _fri) 
GROUP BY SCHEUDLE.MEMBER_ID, CONCAT(WEBFSS.MEMBERS.LAST_NAME, ", " ,WEBFSS.MEMBERS.FIRST_NAME); 

をあなたが含まれていない余分な列と選択中の集計関数を含む場合グループbyでは、mysqlはどちらの集約関数にもgroup by節にも含まれていないカラムに対してランダムな値を選択します。