C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■41792  Re[3]: objectのテキスト変換方法教えてください。
□投稿者/ επιστημη -(2009/09/30(Wed) 17:06:33)
>
    > エラー 2 引数 '1': 'object' から 'byte[]' に変換できません。

    えーと...んじゃ dr[0] を byte[] にキャストしたらどうなります?
記事No.41772 のレス /過去ログ72より / 関連記事表示
削除チェック/

■97993  AccessでのSQLについて
□投稿者/ 鏡月 -(2021/08/19(Thu) 13:11:58)

    分類:[Microsoft Office 全般] 

    2021/08/19(Thu) 13:26:49 編集(投稿者)

    お世話になっております。

    SQLの作成方法が分からない為、ご存知の方がおりましたらご教授お願い致します。

    SQL1:SELECT 製番, 作業グループ, SUM(材料費) AS 合計材料費, SUM(外注費) AS 合計外注費 FROM T_製番別原価集計 WHERE 本体OP種別 = 0 AND 製番='11930028' GROUP BY 製番, 作業グループ
    出力データ
    製番 作業グループ 合計材料費 合計外注費
    11930028 GC 870489 180425
    11930028 GE 992217 14270
    11930028 GJ 519093 838755
    11930028 GK 286781 86620
    11930028 GS 11208 131270
    11930028 GU 22564 7960
    11930028 GV 939477 67840
    11930028 PE 100650 0
    11930028 PM 663119 352050
    11930028 セイ 0 0

    SQL2:SELECT 製番, 作業グループ, SUM(材料費) AS 合計材料費, SUM(外注費) AS 合計外注費 FROM T_製番別原価集計 WHERE 本体OP種別 = 1 AND 製番='11930028' GROUP BY 製番, 作業グループ
    出力データ
    製番 作業グループ 合計材料費 合計外注費
    11930028 PE 38984 650
    11930028 PM 158000 0
    11930028 UM 510116 1024610

    出力したいデータ
    製番 作業グループ 合計材料費 合計外注費 合計材料費 合計外注費
    11930028 GC 870489 180425
    11930028 GE 992217 14270
    11930028 GJ 519093 838755
    11930028 GK 286781 86620
    11930028 GS 11208 131270
    11930028 GU 22564 7960
    11930028 GV 939477 67840
    11930028 PE 100650 0 38984 650
    11930028 PM 663119 352050 158000 0
    11930028 セイ 0 0
    11930028 UM 510116 1024610

    下記URLを参考に外部結合を作成してみたのですが出力したいデータ通りにはデータが出力されませんでした。
    URL:https://www.accessdbstudy.net/entry/20080705/p1
親記事 /過去ログ170より / 関連記事表示
削除チェック/

■97994  Re[1]: AccessでのSQLについて
□投稿者/ 魔界の仮面弁士 -(2021/08/19(Thu) 13:27:55)
    No97993 (鏡月 さん) に返信
    > 製番 作業グループ 合計材料費 合計外注費 合計材料費 合計外注費
    「合計材料費」「合計外注費」という名前の列が複数ありますね。
    これだと、列名競合のエラーになってしまいます。

    「OP0材料費」「OP1材料費」などのように、列名を変更してはいけないのですか?


    SELECT 製番, 作業グループ
    , SUM(IIF(本体OP種別 = 0, 材料費, NULL)) AS OP0合計材料費
    , SUM(IIF(本体OP種別 = 0, 外注費, NULL)) AS OP0合計外注費
    , SUM(IIF(本体OP種別 = 1, 材料費, NULL)) AS OP1合計材料費
    , SUM(IIF(本体OP種別 = 1, 外注費, NULL)) AS OP1合計外注費
    FROM T_製番別原価集計
    WHERE 製番='11930028' AND 本体OP種別 IN (0, 1)
    GROUP BY 製番, 作業グループ
記事No.97993 のレス /過去ログ170より / 関連記事表示
削除チェック/

■97995  Re[1]: AccessでのSQLについて
□投稿者/ 魔界の仮面弁士 -(2021/08/19(Thu) 13:37:49)
    No97993 (鏡月 さん) に返信
    > 2021/08/19(Thu) 13:26:49 編集(投稿者)

    修正前のコードでは UNION を試しておられるようだったので、
    UNION 版も載せておきます。IIF 関数が許可されていない場合向け。
    JOIN は不要だったので取り除いてあります。

    SELECT 製番, 作業グループ
    , SUM(OP0材料費) AS OP0合計材料費
    , SUM(OP0外注費) AS OP0合計外注費
    , SUM(OP1材料費) AS OP1合計材料費
    , SUM(OP1外注費) AS OP1合計外注費
    FROM (
    SELECT 製番, 作業グループ
    , 材料費 AS OP0材料費
    , 外注費 AS OP0外注費
    , NULL AS OP1材料費
    , NULL AS OP1外注費
    FROM T_製番別原価集計
    WHERE 製番='11930028' AND 本体OP種別 = 0
    UNION ALL
    SELECT 製番, 作業グループ
    , NULL AS OP0材料費
    , NULL AS OP0外注費
    , 材料費 AS OP1材料費
    , 外注費 AS OP1外注費
    FROM T_製番別原価集計
    WHERE 製番='11930028' AND 本体OP種別 = 1
    )
    GROUP BY 製番, 作業グループ
記事No.97993 のレス /過去ログ170より / 関連記事表示
削除チェック/

■97996  Re[2]: AccessでのSQLについて
□投稿者/ 鏡月 -(2021/08/19(Thu) 13:52:39)
    No97995 (魔界の仮面弁士 さん) に返信
    > 製番 作業グループ 合計材料費 合計外注費 合計材料費 合計外注費
    「合計材料費」「合計外注費」という名前の列が複数ありますね。
    これだと、列名競合のエラーになってしまいます。
    ⇒わかりにくい書き方になってしまい申し訳ございません。
     「合計材料費」「合計外注費」は参照元テーブルが違いますので一応エラーにならず出力することが出来ました。

    自分になりにSQLを作成してみて同様の結果を得られましたが魔界の仮面弁士様が作成したSQLの方がすっきりしておりますので一度内容の理解をしたいと思います。

    不要だと思いますが私が作成したSQLになります。

    SELECT
    SWITCH(本体.製番 IS NULL, オプション.製番, 本体.製番 IS NOT NULL, 本体.製番) AS 製番
    ,SWITCH(本体.作業グループ IS NULL, オプション.作業グループ, 本体.作業グループ IS NOT NULL, 本体.作業グループ) AS 作業グループ
    ,本体.合計材料費
    ,本体.合計外注費
    ,オプション.合計材料費
    ,オプション.合計外注費
    FROM
    (
    SELECT * FROM
    (
    SELECT *
    FROM
    (SELECT 製番, 作業グループ, SUM(材料費) AS 合計材料費, SUM(外注費) AS 合計外注費 FROM T_製番別原価集計 WHERE 本体OP種別 = 0 AND 製番='11930028' GROUP BY 製番, 作業グループ) AS 本体
    RIGHT JOIN
    (SELECT 製番, 作業グループ, SUM(材料費) AS 合計材料費, SUM(外注費) AS 合計外注費 FROM T_製番別原価集計 WHERE 本体OP種別 = 1 AND 製番='11930028' GROUP BY 製番, 作業グループ) AS オプション
    ON オプション.製番 = 本体.製番 AND オプション.作業グループ = 本体.作業グループ
    )
    UNION
    (
    SELECT *
    FROM
    (SELECT 製番, 作業グループ, SUM(材料費) AS 合計材料費, SUM(外注費) AS 合計外注費 FROM T_製番別原価集計 WHERE 本体OP種別 = 0 AND 製番='11930028' GROUP BY 製番, 作業グループ) AS 本体
    LEFT JOIN
    (SELECT 製番, 作業グループ, SUM(材料費) AS 合計材料費, SUM(外注費) AS 合計外注費 FROM T_製番別原価集計 WHERE 本体OP種別 = 1 AND 製番='11930028' GROUP BY 製番, 作業グループ) AS オプション
    ON オプション.製番 = 本体.製番 AND オプション.作業グループ = 本体.作業グループ
    )
    )

    早急にご回答していただきありがとうございます。
記事No.97993 のレス / END /過去ログ170より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -