0

我有 2 个具有相同列的表,名为 't1' 和 't2' 。

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 回答