0
我有2个表,我需要连接并生成第三个表,列水平排列。表格如下: 查询水平排列行
我需要table1
和table2
的输出2。
我做了一些研究,发现我需要使用PIVOT
。我也写了一些查询。我的查询是
SELECT * FROM (
SELECT
CONVERT(CHAR(4), table_2.Date, 100) + CONVERT(CHAR(4), table_2.Date, 120) as RegistrationDate,
table_1.PDESC as ProductDescription from table_2
left outer join table_1 on table_1.PID = table_2.PID
)
tableT
PIVOT (count(ProductDescription) FOR RegistrationDate
IN ([Jan 2009],[Feb 2009],[Mar 2009],[Apr 2009],[May 2009],[Jun 2009])) AS pvt
但是这个查询不起作用!我还附加了SQL脚本来创建表。
我已将该脚本上传到here。
安置自己的脚本,而不是到sqlfiddle.com是NSFW网站 – RichardTheKiwi 2013-05-02 11:05:49
你不应该给一个*在[so]问题下载*链接,特别是不要到文件共享网站。代码应该最好包含在问题本身中,如果它太长了,你应该尝试构建一个简短的例子,如果这是不可能的,应该链接到一个网站(最好是具有良好声誉的知名度),代码出现并且不需要被下载。如果您提供的下载链接的代码与问题中的代码相同,则应删除该链接。 – Dukeling 2013-05-02 11:19:57
由于您正在从'table_2'中选择并加入到'table_1'中,并且假设'table_2.PID'是'table_1.PID'的外键,您应该将您的连接更改为'INNER'连接,因为不存在任何记录在'table_1'中不存在的'table_2'中。或者,如果您希望产品即使在“table_2”中没有记录,也要在结果中显示,请更改,以便您从table_1中选择并保留加入“table_2”。 – GarethD 2013-05-02 12:00:30