2つのSQLテーブルから単一の結果セットを返します

user3580480

同じ列を返す2つのSQLクエリがあります。

返される列名は、month_name、month_number、およびtotalです。

「合計」フィールドを合計して、2つのテーブルから単一の結果セットを返すにはどうすればよいですか?

クエリ1

SELECT DISTINCT
DATENAME(MONTH,DATEADD(MONTH,month([date]),-1 )) as month_name,
MONTH([date]) as month_number,
SUM(pur.total_expenses - pur.vat) as 'total'
FROM (select distinct ID, MONTH([date]) as month_number, DATENAME(MONTH,DATEADD(MONTH,month([date]),-1 )) as month_name from [dbo].[purchase_invoices] WHERE YEAR([date]) = '2020'  ) m
LEFT JOIN [dbo].[purchase_invoices] pur ON pur.id = m.id
LEFT JOIN [dbo].[dividends] div on month(dividend_date) = month([date]) AND month(dividend_date) =  '2020'
WHERE YEAR([date]) = '2020'
GROUP BY m.month_number, MONTH([date]), m.month_name
ORDER BY month_number

クエリ2

SELECT DISTINCT
DATENAME(MONTH,DATEADD(MONTH,month([dividend_date]),-1 )) as month_name,
MONTH([dividend_date]) as month_number,
SUM(div.dividend_value) as 'total'
FROM (select distinct ID, MONTH([dividend_date]) as month_number, DATENAME(MONTH,DATEADD(MONTH,month([dividend_date]),-1 )) as month_name from [dbo].[dividends] WHERE YEAR([dividend_date]) = '2020'  ) m
LEFT JOIN [dbo].[dividends] div ON div.id = m.id
WHERE YEAR([dividend_date]) = '2020'
GROUP BY m.month_number, MONTH([dividend_date]), m.month_name
ORDER BY month_number

month_nameまたはnumberフィールドにJOINが必要なことはわかっていますが、それを実現する方法がわかりません。

どんな助けでも大歓迎です。

UPDATE(期待される出力)

|---------------------|------------------|------------------|
|      month_name     |   month_number   |      total       |
|---------------------|------------------|------------------|
|          Jan        |         1        |      4500        |
|---------------------|------------------|------------------|
|          Feb        |         2        |      6000        |
|---------------------|------------------|------------------|
|          ...        |        ...       |       ...        |
ヘザー

CTEを使用してみてください。

WITH invoice AS (
  SELECT DISTINCT
    ID,
    MONTH([date]) AS month_number,
    DATENAME(MONTH, DATEADD(MONTH, MONTH([date]), -1)) AS month_name
 FROM[dbo].[purchase_invoices]
 WHERE
    YEAR([date]) = '2020'
),
q1 AS (
SELECT DISTINCT
    DATENAME(MONTH, DATEADD(MONTH, MONTH([date]), -1)) AS month_name,
    MONTH([date]) AS month_number,
    SUM(pur.total_expenses - pur.vat) AS 'total'
FROM invoice as m
LEFT JOIN[dbo].[purchase_invoices] pur
    ON pur.id = m.id
LEFT JOIN[dbo].[dividends] DIV
    ON MONTH(dividend_date) = MONTH([date])
    AND MONTH(dividend_date) = '2020'
WHERE
    YEAR([date]) = '2020'
GROUP BY
    m.month_number,
    MONTH([date]),
    m.month_name
ORDER BY
    month_number
),
dividend AS (
  SELECT DISTINCT
    ID,
    MONTH([dividend_date]) AS month_number,
    DATENAME(MONTH, DATEADD(MONTH, MONTH([dividend_date]), -1)) AS month_name
  FROM[dbo].[dividends]
  WHERE
    YEAR([dividend_date]) = '2020'
),
q2 AS (
  SELECT DISTINCT
    DATENAME(MONTH, DATEADD(MONTH, MONTH([dividend_date]), -1)) AS month_name,
    MONTH([dividend_date]) AS month_number,
    SUM(DIV.dividend_value) AS 'total'
FROM dividend as m
LEFT JOIN[dbo].[dividends] DIV
    ON DIV.id = m.id
WHERE
    YEAR([dividend_date]) = '2020'
GROUP BY
    m.month_number,
    MONTH([dividend_date]),
    m.month_name
ORDER BY
    month_number
)
  SELECT
   month_name,
   month_number,
   q1.total + q2.total AS total
 FROM q1
 LEFT JOIN q2
   ON q1.month_name = q2.month_name
   AND q1.month_number = q2.month_number

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つのテーブルの結果セットから最新の結果を返します

分類Dev

SQLで2つのテーブルを結合し、null値を含む結果セットを返します

分類Dev

SQL Server:他の2つのテーブルの結果セットを比較しながら、1つのテーブルの行を反復処理します

分類Dev

SQL 2つのテーブルから特定の値を取得し、結果セットを複数の行にします

分類Dev

2つの結合を持つ最初のテーブルからの結果のみを返します

分類Dev

SQLServerの2つのテーブルから一意の結果セットを取得する

分類Dev

2列のHTMLテーブルに単一のPHP結果セットを入力します

分類Dev

SQL Server:別の結果セットの検索に基づいて1つのテーブルから結果を取得します

分類Dev

単一の結果セットで複数のデータベースの同じ名前のテーブルからレコードを取得します

分類Dev

dapperから返された結果セット/テーブルの数を取得します。QueryMultipleメソッド

分類Dev

2つのテーブルを結合して、2番目のテーブルからすべての行を単一の行として返します

分類Dev

2つのテーブルからSQL結果セットをランダム化する方法は?

分類Dev

3つの同一のテーブルから単一の結果セットを取得する簡単な方法は?

分類Dev

2つの異なるテーブルから結果を取得し、単一の結果として表示します

分類Dev

2つのテーブルから結果を返すSQLステートメント

分類Dev

2つのテーブルからのMysql単一の結果

分類Dev

SQLAlchemyがnullの2つのテーブルから選択LEFTJOINは空の結果を返します

分類Dev

結果セット内の2つのテーブルの列を連結します

分類Dev

c#linqは、2つのテーブル間の結合を返すストアドプロシージャから結果を取得します

分類Dev

2つの「select」からの結果テーブルをどのように表示しますか?SQL

分類Dev

SQL:同じクエリからの複数の単一行の結果セットを結合します

分類Dev

Linqは、2つの結果セット(データテーブルから)を更新およびマージします

分類Dev

結果セットをループし、2つのテーブルにフィードします

分類Dev

内部結合結果から単一のテーブルからデータを削除します

分類Dev

SQL Server:2つのテーブルを結合し、競合がある1つのテーブルからの結果を優先します

分類Dev

2つの異なるテーブルから一致する結果を表示できるSQLステートメントはありますか?

分類Dev

共通の列を持つ2つのテーブルから結果を取得するには、単一のSQLクエリが必要です

分類Dev

SQLテーブルの2つの別々のサブセットを選択または結合します

分類Dev

SQLクエリから2セットの結果を返す

Related 関連記事

  1. 1

    2つのテーブルの結果セットから最新の結果を返します

  2. 2

    SQLで2つのテーブルを結合し、null値を含む結果セットを返します

  3. 3

    SQL Server:他の2つのテーブルの結果セットを比較しながら、1つのテーブルの行を反復処理します

  4. 4

    SQL 2つのテーブルから特定の値を取得し、結果セットを複数の行にします

  5. 5

    2つの結合を持つ最初のテーブルからの結果のみを返します

  6. 6

    SQLServerの2つのテーブルから一意の結果セットを取得する

  7. 7

    2列のHTMLテーブルに単一のPHP結果セットを入力します

  8. 8

    SQL Server:別の結果セットの検索に基づいて1つのテーブルから結果を取得します

  9. 9

    単一の結果セットで複数のデータベースの同じ名前のテーブルからレコードを取得します

  10. 10

    dapperから返された結果セット/テーブルの数を取得します。QueryMultipleメソッド

  11. 11

    2つのテーブルを結合して、2番目のテーブルからすべての行を単一の行として返します

  12. 12

    2つのテーブルからSQL結果セットをランダム化する方法は?

  13. 13

    3つの同一のテーブルから単一の結果セットを取得する簡単な方法は?

  14. 14

    2つの異なるテーブルから結果を取得し、単一の結果として表示します

  15. 15

    2つのテーブルから結果を返すSQLステートメント

  16. 16

    2つのテーブルからのMysql単一の結果

  17. 17

    SQLAlchemyがnullの2つのテーブルから選択LEFTJOINは空の結果を返します

  18. 18

    結果セット内の2つのテーブルの列を連結します

  19. 19

    c#linqは、2つのテーブル間の結合を返すストアドプロシージャから結果を取得します

  20. 20

    2つの「select」からの結果テーブルをどのように表示しますか?SQL

  21. 21

    SQL:同じクエリからの複数の単一行の結果セットを結合します

  22. 22

    Linqは、2つの結果セット(データテーブルから)を更新およびマージします

  23. 23

    結果セットをループし、2つのテーブルにフィードします

  24. 24

    内部結合結果から単一のテーブルからデータを削除します

  25. 25

    SQL Server:2つのテーブルを結合し、競合がある1つのテーブルからの結果を優先します

  26. 26

    2つの異なるテーブルから一致する結果を表示できるSQLステートメントはありますか?

  27. 27

    共通の列を持つ2つのテーブルから結果を取得するには、単一のSQLクエリが必要です

  28. 28

    SQLテーブルの2つの別々のサブセットを選択または結合します

  29. 29

    SQLクエリから2セットの結果を返す

ホットタグ

アーカイブ