2013-04-16 68 views
0

我希望在两个SQL查询之间建立连接,在“WHERE”子句的两个不同列中显示相同的字段,如以下示例所示:concat sql查询>根据where子句显示相同的列2条不同的列根据where子句

查询N°1:

SELECT COUNT([ID]) AS SOCIETE_1, 
     CAST([Créé le] AS date) AS DateCreated 
FROM [MFilesCloudReport].[dbo].[Document] 
WHERE [Société_ID] = 1 
GROUP BY CAST([Créé le] AS date) 
ORDER BY CAST([Créé le] AS date) 

- >结果N°1:

SOCIETE_1 DateCreated 
----------------------------------- 
142  | 2013-01-17 
148  | 2013-01-21 
88  | 2013-01-23 
188  | 2013-01-25 
187  | 2013-01-29 
124  | 2013-01-31 

查询N°2:

SELECT COUNT([ID]) AS SOCIETE_2, 
    CAST([Créé le] AS date) AS DateCreated 
FROM [MFilesCloudReport].[dbo].[Document] 
WHERE [Société_ID] = 2 
GROUP BY CAST([Créé le] AS date) 
ORDER BY CAST([Créé le] AS date) 

- >结果N°2:

SOCIETE_2 DateCreated 
----------------------------------- 
18  | 2013-01-17 
73  | 2013-01-21 
75  | 2013-01-23 
1  | 2013-01-24 
48  | 2013-01-25 
80  | 2013-01-29 
43  | 2013-01-31 

预期的结果将是这一个:

SOCIETE_1  SOCIETE_2  TOTAL  DateCreated 
---------------------------------------------------------------------------- 
142   | 18  | 160  | 2013-01-17 
148   | 73  | 221  | 2013-01-21 
88   | 75  | 163  | 2013-01-23 
0   | 1  | 1  | 2013-01-24 
188   | 48  | 236  | 2013-01-25 
187   | 80  | 267  | 2013-01-29 
124   | 43  | 167  | 2013-01-31 

谢谢提前为你的所有帮助和美好的一天。

+0

***什么*** RDBMS是为了这个吗? SQL Server? MySQL的?甲骨文? Postgres的? Informix的? Interbase的?别的东西?????? –

回答

1
SELECT COUNT(case when [Société_ID] = 1 then [ID] end) AS SOCIETE_1, 
     COUNT(case when [Société_ID] = 2 then [ID] end) AS SOCIETE_2, 
     COUNT(*) AS TOTAL, 
     CAST([Créé le] AS date) AS DateCreated 
FROM [MFilesCloudReport].[dbo].[Document] 
GROUP BY CAST([Créé le] AS date) 
ORDER BY CAST([Créé le] AS date) 
+0

@JW是的,我同意,但取决于在“TOTAL”列中显示的内容。 – paul

+0

它完美地工作。非常感谢你,我现在可以将这个方法应用于很多查询:) 谢谢你的帮助和感谢社区:) – locas13