2017-08-01 1 views
-1

私は初心者です。私はこのSQLコードを持っています:アクセスユニオンとカウント

SELECT Red_tag.Zglaszajacy 
From Red_tag 
UNION 
SELECT Red_tag.Interweniujacy 
From Red_tag 

SELECT Count(Red_tag.Zglaszajacy) AS PoliczOfZglaszajacy, Red_tag.Interweniujacy AS PoliczOfInterweniujacy 
FROM Red_tag 

ユニオンは動作しますが、「構文エラーFROM」が表示されます。このような出力を得るにはどうすればよいですか?

|Zglaszajacy&Interweniujacy|CountOfZglaszajacy|CountOfInterweniujący| 

EDIT は思ったよりもそのより複雑なように思えます。 ZglaszajacyとInterweniujacyは人々の集合です。これらの2つのグループも重複しています(約30%の人が両方の列にレコードを持っています)。そのため、同じ人物がズグラサジアザシーに3つの記録を持ち、インターウェイジャイジャシーに7つの記録を持つ場合があります。だから、私はこの2つのグループを統一し、それぞれの人に2つの累積カウントを表示する必要があります。私はあなたが必要とするすべてはあなたのUNIONを使用することによりだから、

SELECT Count(Red_tag.Zglaszajacy) AS PoliczOfZglaszajacy, Red_tag.Interweniujacy AS PoliczOfInterweniujacy 


FROM Red_tag 
GROUP BY Red_tag.Interweniujacy 

UNION

+0

https://www.tutorialspoint.com/ms_sql_server/index.htm –

+0

どのSQLを使用しているかによって、ドキュメントにアクセスできます。 mySQL、またはMicrosoft SQLを使用します。一部の人はそれが気に入らないのですが、w3schools.comもいつでもすぐに試用できます。 –

答えて

0

が不要だと思う

|Union of Zglaszający and Interweniujacy |Count of Zglaszajacy| Count of Interweniujacy| 
--------------------------------------------------------------------------------------- 
|John Doe        |  3    | 5      | 
|Tom Smith        | NULL    | 1      | 
+0

私は(少なくとも私はまだそう思っていますが)必要なのは組合ですが、私の元の質問は間違っていて具体的ではないことが判明しました。私はその記事を編集した。 –

+0

あなたの問題を解決しました。回答の更新を参照してください。 – SandPiper

+0

魅力的な作品! 2日間私はグラフを作成するためにこのテーブルを作ろうとしていました。ありがとうございました! –

0

:私はそれをよく説明している場合イムわからないので、ここでドラフトですクエリの場合、次のような表を作成しています:

Zglaszajacy|Interweniujacy 
A   B 
C   NULL 
NULL  B 

これに変換する:

Zglaszajacy 
A 
C 
NULL 
B 

UNIONには異なるレコードしか保存されていないため、一部のレコードが失われています。すべてのレコードを保持するには、代わりにUNION ALLを使用します。

集計関数COUNT()がカウントしていたものを伝えるGROUP BY句がないため、2番目のSQLクエリが機能しませんでした。

私が以下で行ったことは、UNIONクエリを取得し、そのレコードがZglaszajacyタイプまたはInterweniujacyタイプの場合にフラグを追加しました。次に、FROM句のサブクエリとして使用しました。そこからあなたの人名を選択し、COUNT()集計関数を使用します(または、この例ではSUM()も使用します)。

最後に、WHERE句を追加して、あなたの役に立たないと思われるグルーピング後に残されたNULLという名前を削除しました。

SELECT Person_Name, COUNT(Z_Type) AS Zglaszajacy_Count, 
    COUNT(I_Type) AS Interweniujacy_Count 
FROM (SELECT Zglaszajacy as Person_Name, 1 AS Z_Type, NULL AS I_Type FROM Red_tag 
     UNION ALL 
     SELECT Interweniujacy, NULL, 1 FROM Red_tag) 
WHERE Person_Name IS NOT NULL 
GROUP BY Person_Name 
ORDER BY Person_Name; 

私はこれをMS Accessでテストして動作します。

0
SELECT 
    Red_tag.Zglaszajacy, 
    Red_tag.Interweniujacy, 
    (SELECT COUNT(Red_tag.Zglaszajacy) FROM Red_tag) AS PoliczOfZglaszajacy, 
    (SELECT COUNT(Red_tag.Interweniujacy) FROM Red_tag) AS PoliczOfInterweniujacy 
FROM Red_tag 

これはあなたに望ましい出力を与えますが、これがあなたが望むものかどうかを考える必要があります。列3の値はすべて同じになり、列4の値はすべて同じになります。さらに、列ZglaszajacyおよびInterweniujacyがNOT NULLとして定義されている場合、すべてのカウント値は同一になります。

+0

答えをありがとう、あなたが予測したように、それは私が必要なものではなかった。私はその記事を編集した。 –