我有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()
排序答案 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