1

テーブル内のグループを使用してこれらのクエリを取得するにはどうすればよいですか? 「SaveDate」列の日付であっても、日ごとにグループ化したい。次のように:

+---+------------+------------+---+------------+
|Day|queryresult1|queryresult2|...|queryresult5|
+---+------------+------------+---+------------+
|1  |count       |count       |...|count       |
+---+------------+------------+---+------------+
|2  |count       |count       |...|count       |
+---+------------+------------+---+------------+
|...|...         |...         |...|...         |
+---+------------+------------+---+------------+
|...|...         |...         |...|...         |
+---+------------+------------+---+------------+
|...|...         |...         |...|...         |
+---+------------+------------+---+------------+
|30 |count       |count       |...|count       |
+---+------------+------------+---+------------+

テーブルの列 savedate にデータを記録するのに 1 ~ 15 日。30 日を表示するにはどうすればよいですか?

Select 
(Select Count(*) from Document Where LineID=45 and Esitlendi=1) result1,
(Select Count(*) from Document Where LineID=45 and Esitlendi=1 and TutanakUserID is not null) as result2,
(Select Count(*) from Document Where LineID=45 and Esitlendi=1 and BayiEksik=0 and SahaEksik=0) as result3,
(Select Count(*) from Document Where LineID=45 and Esitlendi=1 and BayiEksik=1 and SahaEksik=0) as result4,
(Select Count(*) from Document Where LineID=45 and Esitlendi=1 and BayiEksik=1 and SahaEksik=1) as result5

ありがとう

4

1 に答える 1

1

一連の CASE ステートメントでうまくいきます。

SELECT SUM(CASE WHEN LINEID=45 AND Esitlendi=1 THEN 1 ELSE 0 END) Result1
     , SUM(CASE WHEN LineID=45 and Esitlendi=1 and TutanakUserID is not null THEN 1 ELSE 0 END) Result2
     , SUM(CASE WHEN LineID=45 and Esitlendi=1 and BayiEksik=0 and SahaEksik=0 THEN 1 ELSE 0 END) Result3
     , SUM(CASE WHEN LineID=45 and Esitlendi=1 and BayiEksik=1 and SahaEksik=0 THEN 1 ELSE 0 END) Result4
     , SUM(CASE WHEN LineID=45 and Esitlendi=1 and BayiEksik=1 and SahaEksik=1 THEN 1 ELSE 0 END) Result5
FROM Document

共通の基準がいくつかあるので、それらを WHERE 句に移動できます。

編集:あなたの例には日付フィールドが表示されませんが、テーブルに日付フィールドがある場合、毎日のレコードを表示するには、毎日がリストされたカレンダーテーブルが必要です:

SELECT SaveDate
     , COUNT(*) Result1
     , SUM(CASE WHEN TutanakUserID is not null THEN 1 ELSE 0 END) Result2
     , SUM(CASE WHEN BayiEksik=0 and SahaEksik=0 THEN 1 ELSE 0 END) Result3
     , SUM(CASE WHEN BayiEksik=1 and SahaEksik=0 THEN 1 ELSE 0 END) Result4
     , SUM(CASE WHEN BayiEksik=1 and SahaEksik=1 THEN 1 ELSE 0 END) Result5
FROM CalTable a
LEFT JOIN Document b
     ON a.date = b.SaveDate
WHERE LineID=45 and Esitlendi=1
GROUP BY SaveDate
ORDER BY SaveDate
于 2013-06-15T22:13:27.387 に答える