我有一个数据库问题,我不知道如何编码,所以非常感谢任何类型的帮助。
基本上就是将不同的类次与相应的价格进行匹配。
我有两个问题。 . .
第一个查询包含基于高峰时段(一天中的 7 点到 22 点)或非高峰时段(一天中的所有其他时间)的价格
SQLQuery1.sql
dte Peak Offpeak
3-23-2015 32.6 17.12
3-24-2015 34.98 17.21
3-25-2015 31.87 19.45
第二个查询包含每小时不同的值
WP-Schedule.sql
CPT Resource 1 2 3 4 5 6 7 8 . . . 24
3-23-2015 WP1 -34 -34 -37 -29 -17 0 -23 -3 25
3-23-2015 WP2 -36 -35 -36 -31 -19 14 15 0 34
3-23-2015 WP3 -34 -34 -35 -31 -18 18 19 3 31
3-24-2015 WP1 -32 -32 -32 -34 -19 15 21 0 30
3-24-2015 WP2 -34 -32 -29 -32 -20 21 23 4 18
3-24-2015 WP3 -36 -35 -36 -31 -19 14 15 0 34
3-25-2015 WP1 -34 -34 -37 -29 -17 0 23 0 25
3-25-2015 WP2 -32 -32 -32 -34 -19 15 21 0 30
3-25-2015 WP3 -34 -32 -29 -32 -20 21 23 16 18
我尝试对这两个查询执行的操作是使用这些信息创建一个新查询,以显示每种资源每小时的价格。条件是,如果 WP-Schedule.sql
查询中的值小于 0,则每小时仅收取费用。此外,如果该小时是高峰时段,则应使用高峰价格那天,如果不是,则使用 Offpeak 价格。
如果我手动创建第一行应该是这样的:
dte/CPT Resource 1 2 3 4 5 6 7 8 . . . 24
3-23-2015 WP1 17.12 17.12 17.12 17.12 17.12 0 32.6 32.6 0
在此编码方面的帮助将不胜感激!!!!
最佳答案
一种方法是使用 24 个 CASE 表达式。
SELECT ...
...
CASE WHEN s.[1] < 0 THEN p.OffPeak ELSE 0 END AS [1],
...
CASE WHEN s.[7] < 0 THEN p.Peak ELSE 0 END AS [7],
...
FROM (YourFirstQuery) p
JOIN (YourSecondQuery) s
ON p.dte=s.CPT
关于sql-server - SQL 服务器 : Create new query that matches prices and values from two separate queries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45015089/