0

't1' および 't2' という名前の同じ列を持つ 2 つのテーブルがあります。

t1 は常に t2 より大きくなります。「t1」と「t2」の単位で「t1」を注文する必要があります

ここに例があります

t1:

dcDay    dcTime    dcCount
===========================
  0        8          1
  0        10         1
  1        8          2
  2        8          2

t2:

dcDay    dcTime    dcCount
===========================
  0        10         1
  2        8          2 

したがって、結果は次のようになります。

dcDay    dcTime    dcCount
===========================
  0        10         1
  2        8          2
  0        8          1
  1        8          2

t1 と t2 は dcCount、NEWID() で順序付けされ、結果は unity(:D)、dcCount、NEWID() で順序付けされる必要があります

4

1 に答える 1

1

SQL Server を使用している場合は、共通テーブル式を使用してこれを実現できます。

WITH CT1(DCDAY,DCTIME,DCCOUNT,SOURCE) AS (
    SELECT DCDAY,DCTIME,DCCOUNT,'T1' AS 'SOURCE'
    FROM T1
    UNION ALL
    SELECT DCDAY,DCTIME,DCCOUNT,'T2' AS 'SOURCE'
    FROM T2
)
,CT2(DCDAY,DCTIME,DCCOUNT,[COUNT],[NEWID]) AS (
    SELECT DISTINCT DCDAY,DCTIME,DCCOUNT, COUNT(*), NEWID()
    FROM CT1
    GROUP BY DCDAY, DCTIME, DCCOUNT
)
SELECT DCDAY, DCTIME, DCCOUNT 
FROM CT2
ORDER BY [COUNT] DESC, DCCOUNT, [NEWID]

CTE の詳細については、http ://technet.microsoft.com/en-us/library/ms175972.aspx を参照してください。

于 2013-09-16T08:17:50.363 に答える