如何从同一个表中动态计算月月差异。
我有下表,我试图比较FT(全职员工)和TE(总员工)每个月(每月比较01到12)并找到差异。如果FT超过该月的TE,则显示ID,公司,FT和TE通过。任何人都可以帮我解决这个问题。
<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
padding: 5px;
text-align: left;
}
</style>
</head>
<body>
<p>FT = Full Time Employee <br>
TE = Total Employee <br>
01-12 = month
</p>
<table style="width:100%">
<tr>
<th>ID</th>
<th>Company</th>
<th>FT01</th>
<th>FT02</th>
<th>FT03</th>
<th>FT04</th>
<th>FT05</th>
<th>FT06</th>
<th>FT07</th>
<th>FT08</th>
<th>FT09</th>
<th>FT10</th>
<th>FT11</th>
<th>FT12</th>
<th>TE01</th>
<th>TE02</th>
<th>TE03</th>
<th>TE04</th>
<th>TE05</th>
<th>TE06</th>
<th>TE07</th>
<th>TE08</th>
<th>TE09</th>
<th>TE10</th>
<th>TE11</th>
<th>TE12</th>
</tr>
<tr>
<td>100</td>
<td>A</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>3</td>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
<td>4</td>
</tr>
<tr>
<td>101</td>
<td>B</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
<td>5</td>
</tr>
<tr>
<td>102</td>
<td>C</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>7</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
<td>6</td>
</tr>
</table>
</body>
</html>
将问题分解成部分!
这个问题实际上是几个“我怎么做?”的问题,其中的问题几乎相当于“为我编写代码”请求。
所以,相反,我将帮助解决第一个问题:数据结构。
你有一个非规范化的表,虽然重组数据库会有所帮助,但有时却无法做到这一点。但是,如果您可以将数据转化为规范化的内容,则可以使查询更容易。
那就让我们这样做吧!
如果表格如下所示,问题会更容易:
ID
Company
MonthNum
TotalEmployees
FullTimeEmployees
...所以让我们编写一个查询,以这种格式获取数据:
select ID, Company, 1 as MonthNum, TE01 as TotalEmployees, FT01 as FullTimeEmployees from ...
UNION ALL
select ID, Company, 2 as MonthNum, TE02 as TotalEmployees, FT02 as FullTimeEmployees from ...
UNION ALL
select ID, Company, 3 as MonthNum, TE03 as TotalEmployees, FT03 as FullTimeEmployees from ...
-- etc, going up to 12.
现在,我们可以通过将其用作子查询来对该数据执行查询:
select WhateverColumns from
(
-- that query from the previous section
) as normalizedData
where WhateverConditionsYouWant
合理?将问题分解为具体步骤,然后开始解决这些步骤。第一个是以更容易使用的格式获取数据,并展示了如何解决这个问题。现在,您需要继续编写查询以获取您所追踪的特定数据。祝你好运!