2016-04-04 21 views
-1

私は以下のクエリ結合クエリ内でサブクエリを書く方法は?

SELECT Op.MRNO, 
     M.PatientName, 
     (
      SELECT COUNT(MRNO) AS Visit 
      FROM HMS_Reg_OPRegister 
      GROUP BY MRNO 
     ) 
FROM HMS_Reg_Patient M, 
    HMS_Reg_OPRegister Op 
WHERE Op.MRNO = M.MRNO 

を書くとき、私はこのエラーを得た:あなたがしたいかのように見えます

Msg 512, Level 16, State 1, Line 14 Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <=, >= or when the subquery is used as an expression.

+0

あなたは何をしようとしていません、あなたの希望する出力は何ですか?あなたは私たちにテーブル構造を与えることができますか? – Ramkee

+2

あなたの質問に直接関係していなくても、おそらくこの記事を覗いてみるべきです。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx –

答えて

1
SELECT Op.MRNO, 
     M.PatientName, 
     Op.Visit 
FROM dbo.HMS_Reg_Patient M 
JOIN (
    SELECT MRNO, COUNT(MRNO) AS Visit 
    FROM dbo.HMS_Reg_OPRegister 
    GROUP BY MRNO 
) Op ON Op.MRNO = M.MRNO 
1

を:

SELECT M.MRNO, 
     MAX(M.PatientName) AS PatientName, 
     COUNT(*) AS Visit 
FROM HMS_Reg_Patient M 
JOIN HMS_Reg_OPRegister Op ON Op.MRNO = M.MRNO 
GROUP BY M.MRNO 

はそれを使用する必要はありませんサブクエリを使用して、グループ内の値の数を取得します。すでにmを数えているテーブルがある場合クエリ。

+0

よろしくお願いします。これはどのようにテーブルを結合するのに使用されました。しかし、私は彼の質問のテーブルにどのように参加したのか理解していません。 – Ramkee

+1

@Ramkee:質問では、OPは古い暗黙的な結合構文を使用しています - テーブルが一緒にリストされ、コンマで区切られ、 WHERE句。 Seanの質問のコメントにリンクされている記事はこれを拡大しています。 –

+1

ああ..ありがとう! – Ramkee

関連する問題