0

これが私のSQLコードです。

サブクエリを使用してラベルを付けましたが、そのサブクエリから列を呼び出すと、無効な識別子として表示されます。

SELECT   TSR.Merchant_id, denomination, SUM (no_of_cards)
    FROM sales_details
   WHERE invoice_id IN (
            SELECT invoice_id
              FROM sales_header TSR
             WHERE entered_by = (
                      (SELECT account_code
                         FROM bk_dsr_account_codes
                        WHERE user_name = 'C'
                          AND PASSWORD = 'D'
                          AND mobile_no = '8994035090213391259'))
               AND entered_date BETWEEN (TO_DATE ('2013/04/01', 'yyyy/mm/dd')
                                        )
                                    AND (TO_DATE ('2013/06/30', 'yyyy/mm/dd')
                                        ))
GROUP BY denomination

以下の通りエラー

ORA-00904: "TSR"."MERCHANT_ID": invalid identifier

この問題を解決するのを手伝ってください。最終的な SQL ビューでもサブクエリの列を呼び出す必要があります。

4

2 に答える 2

3

句にある列のみを使用できますFROM。したがって、クエリは次のようになります。

SELECT TSR.Merchant_id, SD.denomination, SUM (SD.no_of_cards)
  FROM sales_details SD
  JOIN sales_header TSR on SD.invoice_od = TSR.invoice_id
 WHERE entered_by = (
                  (SELECT account_code
                     FROM bk_dsr_account_codes
                    WHERE user_name = 'C'
                      AND PASSWORD = 'D'
                      AND mobile_no = '8994035090213391259'))
           AND entered_date BETWEEN (TO_DATE ('2013/04/01', 'yyyy/mm/dd')
                                    )
                                AND (TO_DATE ('2013/06/30', 'yyyy/mm/dd')
                                    )
GROUP BY SD.denomination
于 2013-06-03T06:56:29.727 に答える
1
select * from table1, table2 where table1.userid=x and table2.sdsd=x

また

select * from table1 t1, table2 t2 where t1.userid=x and t2.sdsd=x

上記の2つと同じ出力...

これを試して

SELECT   TSR.Merchant_id, denomination, SUM (no_of_cards)
    FROM sales_details,TSR
   WHERE invoice_id IN (
            SELECT invoice_id
              FROM sales_header TSR
             WHERE entered_by = (
                      (SELECT account_code
                         FROM bk_dsr_account_codes
                        WHERE user_name = 'C'
                          AND PASSWORD = 'D'
                          AND mobile_no = '8994035090213391259'))
               AND entered_date BETWEEN (TO_DATE ('2013/04/01', 'yyyy/mm/dd')
                                        )
                                    AND (TO_DATE ('2013/06/30', 'yyyy/mm/dd')
                                        ))
GROUP BY denomination
于 2013-06-03T06:59:52.477 に答える