• ベストアンサー

Dcountの条件式の意味

質問No.9247388でクロス集計のカウント数合計を条件にするSQLを教えて頂きましたが、その中の一式の意味が理解できません。 簡単にこの意味を教えていただけないでしょうか。なぜ&が最後にも付くのでしょうか。 <知りたい部分> くだもの='" & [くだもの] & "' <全体> TRANSFORM Count([テーブル1].個数) AS 個数の個数 SELECT [テーブル1].[くだもの], DCount("個数","テーブル1","くだもの='" & [くだもの] & "'") AS 個数 FROM テーブル1 WHERE (((DCount("個数","テーブル1","くだもの='" & [くだもの] & "'"))>1)) GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;

質問者が選んだベストアンサー

  • ベストアンサー
noname#231195
noname#231195
回答No.1

どういう条件式が欲しいのですか? 私は、果物ごとに『くだもの='りんご'』というような条件式が欲しいのだろうと理解したのですが。 もしそれが正しければ、最後のアボストロフィを&でつなげているだけです。 文字列はアポストロフィでくくるんだという話はご存知なんですよね?

関連するQ&A

  • アクセス:クロス集計の抽出条件-2

    質問No.9247365 で類似した質問をしました。 添付のようなテーブルがあり下記のSQLを実行するとクエリ1になるのですが、カウントに抽出条件を入れてクエリ3のように合計件数が1のものは集計しないようしたいと思います。 下記SQLをどのように直したらよいでしょうか。一つのクエリで行う方法を教えて下さい。 TRANSFORM Count([テーブル1].[くだもの]) AS くだもののカウント SELECT [テーブル1].[くだもの], Count([テーブル1].個数) AS 合計 FROM テーブル1 GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;

  • アクセス:クロス集計の抽出条件

    添付のようなテーブルがあり下記のSQLを実行するとクエリ1になるのですが、合計数に抽出条件を入れてクエリ2のように10個以下のものは表示しないようしたいと思います。 下記SQLをどのように直したらよいでしょうか。一つのクエリで行う方法を教えて下さい。 TRANSFORM Sum([テーブル1].個数) AS 個数の合計 SELECT [テーブル1].[くだもの], Sum([テーブル1].個数) AS 合計 FROM テーブル1 GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;

  • ACCESS2000でDCount関数の使い方

    ACCESS2000で更新クエリの質問です。 先日同様の質問をさせていただきましたが、その後うまくできないところがあったので再度質問させていただきました。 内容は、フィールドの値のカウントを集計し、更新クエリを使用してデータを更新するという内容です。 前回の質問でDCount関数を用いて下記のとおり実行するとできるとのことでしたが、条件が複数ある場合どのように記述すれば いいのかを教えて下さい。 条件は、 (1)年月 =Aテーブル.年月 (2)コード=Aテーブル.コード (3)区分 =Aテーブル.区分 <こんな感じで実行しようとしたのですがうまく動きません> UPDATE Bテーブル SET" カウント数1 = DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='001'') カウント数2 = DCount('区分','Aテーブル','[A年月]=[B年月] And [Aコード]=[Bコード] And [A区分]='002'') やりたいことは下記のとおりです。Aテーブルを集計しBテーブルの個数にAテーブルの個数の合計値を更新する。 <Aテーブル> A年月  Aコード A区分      200807  9991   001 200807  9991   001 200807  9991   001 200807  9991   002 200807  9991   002 <Bテーブル> B年月  Bコード Bカウント数1  Bカウント数2 200807  9991        0       0 ↓↓↓更新後 <結果:Bテーブル>   B年月  Bコード Bカウント数1  Bカウント数2 200807  9991        3       2              ↑       ↑    (Aテーブルの区分='001'  (Aテーブルの区分='002'     を集計した結果)       を集計した結果)

  • クロス集計で、SUMがゼロになる

    下記のようなクロス集計で、countの部分をsumに替えると、すべてゼロになるのはなぜでしょう? 差引支給額は通貨型なので、そのせいでしょうか? TRANSFORM count([給与明細T].[差引支給額]) AS カウント SELECT [給与明細T].[所属コード] FROM 給与明細T WHERE ((([給与明細T].[年])=2005)) GROUP BY [給与明細T].[所属コード] PIVOT [給与明細T].[月];

  • クロス集計クエリについて

    現在、次の様な2個のSQL記事で別々のクロス集計を行っていますが1カ所で同様の集計又は、クロス集計同士結合を行う事は出来ないでしょうか?あまり意味の無いようにも思われますがEXCELで複合グラフにする必要がある為、 (1)、TRANSFORM Count(*) AS 件数 SELECT DAO1.客先, Year(DateAdd("m",-3,DAO1.[発生日])) & "年度" AS 年度, Count(*) AS 年度計, Sum(IIf(Month(DateAdd("m",-3,DAO1.[発生日]))<7,1,0)) AS 上期計, Sum(IIf(Month(DateAdd("m",-3,DAO1.[発生日]))<7,0,1)) AS 下期計 FROM DAO1 WHERE (((Year(DateAdd("m",-3,[DAO1].[発生日])) & "年度") Between Nz([年度いつから?],0) And Nz([年度いつまで?],99999)) AND ((DAO1.品記) Is Not Null)) GROUP BY DAO1.客先, Year(DateAdd("m",-3,DAO1.[発生日])) & "年度" ORDER BY Year(DateAdd("m",-3,DAO1.[発生日])) & "年度", Format([発生日],"oooo") PIVOT Format([発生日],"oooo") In ("4月","5月","6月","7月","8月","9月", "10月","11月","12月","1月","2月","3月"); (2)、TRANSFORM Count(DAO1.品記) AS 品記のカウント SELECT DAO1.客先 FROM DAO1 GROUP BY DAO1.客先 PIVOT DAO1.年度;

  • 個数をクエリで求めたい

    記号番号 A  1 A  1 A  2 B  2 というテーブルがあるのですが、 これを クエリで 記号  番号 個数 A      1    2 A     2    1 B     2    1 という結果を出すにはどのようなSQL文を作ればよいでしょうか? SELECT Count([テーブル1].記号) AS 記号のカウント, Count([テーブル1].番号) AS 番号のカウント FROM テーブル1; これだと、 記号のカウント 番号のカウント 4            4 という結果になります。

  • クロス集計での order by句の使い方

    下記の order byの部分を年月日でなく合計件数順に並べ変えたいのですが、Count(氏名)を入れると「 order by句で集計関数は使えません」のようなメッセージが出ます。(access2000) 何か良い方法はないでしょうか。 TRANSFORM Count(氏名) AS 氏名のカウント SELECT 年月日, Count(氏名) AS 合計件数 FROM 日誌 GROUP BY 年月日 ORDER BY 年月日 PIVOT 区分; #access素人です。

  • Access2003 上からn番目の数値の取得

    Access2003 上からn番目の数値の取得 クロス集計クエリで、年間12回測定しているうちの 4番目の数値を取得したいと考えています。 最大、最小、平均はもちろんわかるのですが、 「n番目」が判らず困っています。 ちなみに下は最大値を集計したクロス集計クエリです。 TRANSFORM Max([気象テーブル].気温) AS 気温の最大 SELECT [気象テーブル].年 FROM [気象テーブル] GROUP BY [気象テーブル].年 PIVOT [気象テーブル].測定地点; Maxのところに何らかの関数が入るのでしょうか・・・ どなたかご教示をお願いいたします。

  • 列に対して条件抽出する方法 クロス集計クエリ

    クロス集計クエリで 列に対して条件抽出する方法ってあるのでしょうか? 例えば、元データが 日付       金額       科目 2013/09/16   ¥100   食費 2013/09/24   ¥8,100   生活費 2013/10/01   ¥10,000   生活費 と言うテーブルがあるのですが このテーブルを元にクロス集計クエリを作りました。 ウィザードで作ったら TRANSFORM Sum(T_test.金額) AS 金額の合計 SELECT T_test.科目, Sum(T_test.金額) AS [合計 金額] FROM T_test GROUP BY T_test.科目 PIVOT Format([日付],"oooo") In ("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"); こうなりました。 形としてはこのままでいいのですが、 例えば、9月分のみ表示したい場合、どうすればいいのでしょうか? 抽出条件として Between #2013/09/01# And #2013/09/30# を入れてみましたが、 何も表示されなくなってしまいます。

  • EXCELのVBAでDcount関数がうまく動きません。

    EXCELのVBAでDcount関数を使おうとして、下記コードを作成しましたが、Dcount関数の部分が期待どおり動かず、該当なしとして、0を返してきます。 デバックで途中でマクロを止めて(Dcount関数の前)、セルに直接Dcount関数を入力すると、期待どおりの値を返してきます。 Dcount関数の記述の何が問題なのか、ご教示いただければ幸いです。 Sub 期間集計() Dim myrow, Krow As Double Dim First, Last As Date Dim i, Count As Integer Dim Data As Integer Dim Keria As String 'Worksheets("期間別").Activate Worksheets("期間別").Range("A1:BB65536").Delete Worksheets("入力").Activate With Worksheets("入力") '入力表の最終行の行数をmyrowに代入 myrow = .Range("A65536").End(xlUp).Offset(1).Row '出力前に入力データを日付順にソート .Range("A3").Sort _ Key1:=.Columns("A"), _ Header:=xlGuess First = Worksheets("集計").Range("G3") Last = Worksheets("集計").Range("H3") .Range("BH3:BH5").ClearContents .Range("BH3") = "日付" .Range("bi3") = "日付" .Range("BH4") = ">=" & First .Range("BI4") = "<=" & Last .Range(.Cells(2, 1), Cells(myrow, 47)).AdvancedFilter Action:=xlFilterCopy, _ Criteriarange:=.Range("BH3:BI4"), Copytorange:=Worksheets("期間別").Range("C11"), Unique:=False Krow = Worksheets("期間別").Range("C65536").End(xlUp).Row Keria = "C11:" & "AW" & Krow End With Worksheets("集計").Activate With Worksheets("集計") .Range(.Cells(13, 10), .Cells(24, 10)).ClearContents For i = 1 To 12 Count = 12 + i .Range(.Cells(Count, 16), .Cells(Count, 61)).Copy .Range(.Cells(11, 16), .Cells(11, 61)).PasteSpecial Paste:=xlValues .Range(.Cells(10, 16), .Cells(11, 61)).Copy With Worksheets("期間別") .Range(.Cells(11, 53), .Cells(12, 98)).PasteSpecial Paste:=xlValues Data = WorksheetFunction.DCount(.Range(Keria), .Range("C11"), .Range("BA11:CT12")) End With .Cells(Count, 10) = Data Next i End With

専門家に質問してみよう