0

次のクエリの実行に問題があります。

各曜日の各モデルごとに使用される[ID]の数を見つける必要があります。他のメトリックを合計するために同様のクエリを実行するのに問題はありません。

しかし、この場合、「varchar値「07:2767:90:56」をデータ型intに変換するときに変換に失敗しました」というメッセージが表示されます。

[ID]のカウントクエリを(case if)関数なしで問題なく実行できます。

SELECT model,

 count(CASE WHEN datepart(weekday, [date]) =2 THEN (ID)else 0 END) AS [Monday]
 count(CASE WHEN datepart(weekday, [date]) =3 THEN (ID)else 0 END) AS [Tuesday]
 count(CASE WHEN datepart(weekday, [date]) =4 THEN (ID)else 0 END) AS [Wednesday]
 count(CASE WHEN datepart(weekday, [date]) =5 THEN (ID)else 0 END) AS [Thursday]
 count(CASE WHEN datepart(weekday, [date]) =6 THEN (ID)else 0 END) AS [Friday]

from clientdata 

where [date] between cast ((GETDATE() -7) AS date) and cast (GETDATE()-1 AS date)
group by d.model;
4

2 に答える 2

1

これを試して

SELECT model,

 count(CASE WHEN datepart(weekday,[date])=2 THEN ID else 0 END) AS [Monday],
 count(CASE WHEN datepart(weekday,[date])=3 THEN ID else 0 END) AS [Tuesday],
 count(CASE WHEN datepart(weekday,[date])=4 THEN ID else 0 END) AS [Wednesday],
 count(CASE WHEN datepart(weekday,[date])=5 THEN ID else 0 END) AS [Thursday],
 count(CASE WHEN datepart(weekday,[date])=6 THEN ID else 0 END) AS [Friday]

from clientdata  d

where [date] between (GETDATE() -7) and (GETDATE()-1)
group by d.model;
于 2012-07-31T17:34:59.017 に答える
0

特定のエラーが発生する理由はわかりませんが、いくつかの問題があります。

  • 選択したフィールドの後にカンマはありません (月曜日、火曜日などの後にカンマが必要です)。
  • d が有効なテーブル エイリアスではない d.model でグループ化しています
  • クエリは、探している結果を返しません。すべてのカウントは、日々同じになります。次のような SUM を使用します。

    SUM(CASE WHEN datepart(weekday, [date]) =2 THEN 1 else 0 END) AS [Monday]

于 2012-07-31T17:37:19.607 に答える