按两个表的统一排序

时间:2013-09-16 08:00:12

标签: sql sql-server

我有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()排序,结果必须按单位(:D),dcCount,NEWID()

排序

1 个答案:

答案 0 :(得分:1)

如果您使用的是SQL Server,则可以使用Common Table Expressions完成此操作。

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

相关问题