1

正しい情報を返すクエリがありますが、個別の日数を取得してカウントを合計する方法がわかりません。以下は私のクエリで、結果は私が何を返すか、何を返したいかを示しています。組合が彼らに加わり、私が望んでいた結果を返してくれると思いました。かなり長い間検索しましたが、このトピックに関するヘルプは見つかりませんでした。どんな助けでも大歓迎です。前もって感謝します。

SELECT COUNT(log_datetime) AS icount, CONVERT(varchar, log_datetime, 101) AS logdate
from openrowset('sqloledb', 'ServerName1';'UserID';'Password',
          'select * from DatabaseName..TableName where field1 > 899')
group by convert(varchar, log_datetime, 101)
union
SELECT COUNT(log_datetime) AS icount, CONVERT(varchar, log_datetime, 101) AS logdate
from openrowset('sqloledb', 'ServerName2';'UserID';'Password',
    'select * from DatabaseName..TableName where field1 > 899')
group by convert(varchar, log_datetime, 101)
order by logdate


Results
235     01/10/2013
312     01/10/2013
3091    01/11/2013
3197    01/11/2013
3339    01/12/2013
3536    01/12/2013


Wanted Results
547      01/10/2013
6288     01/11/2013
6875     01/12/2013
4

3 に答える 3

1
SELECT count(1) icount, AA.logdate FROM
(
SELECT CONVERT(varchar, log_datetime, 101) AS logdate
from openrowset('sqloledb', 'ServerName1';'UserID';'Password',
          'select * from DatabaseName..TableName where field1 > 899')
union all
SELECT CONVERT(varchar, log_datetime, 101) AS logdate
from openrowset('sqloledb', 'ServerName2';'UserID';'Password',
    'select * from DatabaseName..TableName where field1 > 899')
) AA
group by AA.logdate order by AA.logdate
于 2013-02-09T04:56:07.290 に答える
1

これを試すことができます

SELECT SUM(icount) AS icount, logdate FROM
(
    SELECT COUNT(log_datetime) AS icount, CONVERT(varchar, log_datetime, 101) AS logdate
    FROM openrowset('sqloledb', 'ServerName1';'UserID';'Password',
              'select * from DatabaseName..TableName where field1 > 899')
    GROUP BY convert(varchar, log_datetime, 101)
        UNION ALL
    SELECT COUNT(log_datetime) AS icount, CONVERT(varchar, log_datetime, 101) AS logdate
    FROM openrowset('sqloledb', 'ServerName2';'UserID';'Password',
        'select * from DatabaseName..TableName where field1 > 899')
    GROUP BY convert(varchar, log_datetime, 101)
) AS tbl
GROUP BY logdate
ORDER BY logdate

そして、ここにsqlfiddleがあります

于 2013-02-09T01:07:26.813 に答える
0

ピータームの答えは正しいと思いますが、理由についてメモを追加したかっただけです。

SQL では、セットで考える必要があります。2 つの一意のデータ セットを作成し、UNION を使用してそれらを結合します。ただし、GROUP BY ステートメントは組み合わせではなく、各セット内にあります。したがって、結果は複数行になります。すべてを別の SELECT ステートメントでラップすることにより、結合されたセットを照会し、グループ化と集約ができるようになります。

于 2013-02-09T02:07:45.270 に答える